文章目录
- 1.自动配置原理入门
- 1.1 引导加载自动配置类
- 1.2 按需开启自动配置项
- 1.3 修改默认配置
- 1.4 最佳实践
- 2.开发小技巧
- 2.1 Lombok
- 2.1.1 简化Bean开发
- 2.1.2 简化日志开发
- 2.2 dev-tools
- 2.3 Spring Initailizr(项目初始化向导)
1.自动配置原理入门
1.1 引导加载自动配置类
1.2 按需开启自动配置项
虽然我们127个场景的所有自动配置启动的时候默认全部加载。(xxxxAutoConfiguration)
但是按照条件装配规则(@Conditional),最终会按需配置。
1.3 修改默认配置
1.4 最佳实践
- 引入场景依赖
- 查看自动配置了哪些
○ 自己分析,引入场景对应的自动配置一般都生效了
○ 配置文件中debug=true开启自动配置报告。Negative(不生效)\Positive(生效) - 是否需要修改
○ 参照文档修改配置项
(1) https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties
(2)自己分析。xxxxProperties绑定了配置文件的哪些。
○ 自定义加入或者替换组件
(1)@Bean、@Component。。。
○ 自定义器 XXXXXCustomizer;
2.开发小技巧
2.1 Lombok
2.1.1 简化Bean开发
引入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
安装插件
之前的写法:
package com.sdnu.boot.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 只有在spring容器中的组件才会有这个功能,所有要使用@Component去注册组件
*/
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
public Car() {
}
public Car(String brand, Integer price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
}
有了lombok后的写法:
package com.sdnu.boot.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 只有在spring容器中的组件才会有这个功能,所有要使用@Component去注册组件
*/
@Data //代替get和set方法
@ToString //代替toString方法
@NoArgsConstructor //代替无参构造
@AllArgsConstructor //代替有参构造
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
}
2.1.2 简化日志开发
@Slf4j
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(@RequestParam("name") String name){
log.info("请求进来");
return "Hello"+name;
}
}
2.2 dev-tools
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
项目或者页面修改以后:Ctrl+F9;
2.3 Spring Initailizr(项目初始化向导)