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);
}
相关推荐
canonical_entropy3 分钟前
Nop入门:增加DSL模型解析器
spring boot·后端·架构
北极糊的狐26 分钟前
若依系统报错net::ERR_CONNECTION_TIMED_OUT的原因
java·windows·sql·mybatis
计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue图书借阅管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
undsky_2 小时前
【RuoYi-SpringBoot3-Pro】:接入 AI 对话能力
人工智能·spring boot·后端·ai·ruoyi
pingzhuyan4 小时前
微服务: springboot整合kafka实现消息的简单收发(上)
spring boot·微服务·kafka
LSL666_4 小时前
12 MyBatis的连接池
java·服务器·mybatis
sszdlbw4 小时前
后端springboot框架入门学习--第二篇
java·spring boot·学习
阿拉斯攀登4 小时前
MyBatis 全面解析 & Spring Boot 集成实战
java·spring boot·mybatis·持久层框架
qq_12498707535 小时前
基于springboot健康养老APP的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·微信小程序·毕业设计