Itheima-Springboot2【二刷】

1. Springboot parent和starter区别

  • parent :开发Springboot项目需要继承spring-boot-starter-parent,其中定义了若干个依赖管理(坐标版本号 ),避免依赖版本冲突
  • starter :开发Springboot项目需要导入坐标时通常导入对应的starter,每个starter根据功能不同,通常包含多个依赖坐标简化配置

2. 配置文件加载优先级

  • .properties > .yml > .yaml
  • 不同配置文件中相同的配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留。

3. 配置文件属性提示消失解决方案

4. 读取配置文件属性数据

  • 读取单一属性属性:@Value
java 复制代码
@Value("${server.port}")
private String port;
  • 读取全部属性数据:Environment
java 复制代码
@Autowired
private Environment env; 
...
sout(env.getProperty("server.port"));
  • 自定义对象封装指定数据(目前常用

5. 整合第三方技术

  1. 导入相关依赖(starter)
  2. 配置yml

6. 工程打包与运行

  • mvn clean -> mvn package
  • pom里应包含打包插件spring-boot-maven-plugin
  • java -jar xxxx.jar [(临时属性:)--server.port=8080 --xx=xx] 运行jar文件。

  • linux系统打包运行暂时跳过!

7. 配置文件4级分类


多层级配置文件间的属性采用叠加并覆盖的形式作用于程序。

8. 多环境开发

  • 单文件

  • 多文件(yml) :主文件中设置公共属性,环境分类文件中设置冲突属性

  • 多文件(properties)

  • 多环境分组管理

9. 热部署

  • 手工启动热部署

(1)导入依赖 devtools

java 复制代码
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifcatId>spring-boot-devtools</artifactId>
</dependency>

(2)激活热部署(restart):build project (Ctrl + F9)

  • 自动启动热部署


    激活方式:IDEA失去焦点5s后启动热部署。

10. @ConfigurationProperties 第三方Bean属性绑定

java 复制代码
@Bean
@ConfigurationProperties(prefix="datasource")
public DruidDataSource datasource(){
	DruidDataSource ds = new DruidDataSource();
	return ds;
}
  • 宽松绑定属性名 可以宽松绑定,但绑定前缀名prefix)必须仅能使用纯小写字母、数字、下划线作为合法字符;

  • Bean的属性校验

    (1)导入JSR303和Hibernate校验框架依赖;

    (2)使用@Validated注解启用校验功能;

    (3)使用具体的校验规则规范数据校验格式。

11. web环境模拟测试 webEnvironment =

(1)设置测试端口

java 复制代码
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class WebTest {
	@Test
	void test(){
		xxxxx;
	}
}

(2)模拟测试启动

(3)模拟测试匹配

java 复制代码
@Test
void testGetById(@Autowired MockMvc mvc) throws Exception {
	MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books");
	ResultActions action = mvc.perform(builder);

	// 测试响应状态
	StatusResultMatchers status =  MockMvcResultMatchers.status();
	ResultMatcher ok = status.isOk();
	action.andExpect(ok);

	// 测试响应头
	StatusResultMatchers header=  MockMvcResultMatchers.header();
	ResultMatcher contentType = header.string("Content_Type", "application/json");
	action.andExpect(contentType);

	// 测试响应体,json
	StatusResultMatchers content=  MockMvcResultMatchers.content();
	ResultMatcher result= content.json("{\"id\":1,\"name\":\"wyw\"}");
	action.andExpect(result);
}
相关推荐
岁岁种桃花儿21 分钟前
构建SpringBoot项目Docker镜像并发布到k8s集群中进行运行
spring boot·docker·kubernetes
九转苍翎25 分钟前
掌控消息全链路(3)——RabbitMQ/Spring-AMQP高级特性详解之TTL、死信和延迟
spring boot·java-rabbitmq
九皇叔叔28 分钟前
【07】SpringBoot3 MybatisPlus 删除(Mapper)
java·开发语言·mybatis·mybatis plus
sheji341629 分钟前
【开题答辩全过程】以 基于Spring Boot的化妆品销售系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
VX:Fegn08959 小时前
计算机毕业设计|基于ssm + vue超市管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·课程设计
Mr.朱鹏10 小时前
Nginx路由转发案例实战
java·运维·spring boot·nginx·spring·intellij-idea·jetty
VX:Fegn089511 小时前
计算机毕业设计|基于springboot + vue酒店管理系统(源码+数据库+文档)
vue.js·spring boot·课程设计
Java天梯之路13 小时前
Spring Boot 钩子全集实战(七):BeanFactoryPostProcessor详解
java·spring boot·后端
unable code14 小时前
磁盘取证-[第十章][10.1.2 磁盘取证方法]磁盘取证1
网络安全·ctf·misc·1024程序员节·内存取证
露天赏雪15 小时前
Java 高并发编程实战:从线程池到分布式锁,解决生产环境并发问题
java·开发语言·spring boot·分布式·后端·mysql