SpringBoot常用注解(配置相关)
1.yml语法
★注意空格
yml中的写法
properties中的写法
2.@Value获取值和@ConfigurationProperties获取值比较
备注:
松散绑定:就是不区分配置文件中的大小写等等,都能获取到值
SpEL:配置文件中的计算获取的值
JSR303数据校验:例如在字段前面加@Emial注解,校验该字段是否为emial格式,如果不是,会报错!
复杂类型封装:例如map类型封装的数据
@Value获取值的代码
@RestController
public class HelloController {
@Value("${person.lastName}")
private String name;
@RequestMapping("/sayHello")
public String sayHello(){
return "Hello," + name;
}
}
@ConfigurationProperties获取值的代码(默认从全局配置文件中获取)
@PropertySource获取值的代码(从指定的配置文件目录获取)
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties: 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
* perfix = "person": 配置文件中哪个下面的所有属性进行一一映射
* @PropertySource:从指定的配置文件目录获取
*只有这个组件是容器中的组件,才能提供@ConfigurationProperties功能,所有要加@Component注解
* */
@Component
@ConfigurationProperties(prefix = "person") //默认从全局配置文件中获取
@PropertySource(value={"classpath:person.yml"}) //从指定的配置文件目录获取
@Data
public class Person1 {
@Email //数据校验,是否为email
private String lastName;
private String age;
private Boolean boss;
private Date birth;
private Map maps;
private Dog dog;
}
应用场景:
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
另外如果需要从指定配置文件目录获取的时候,用@PropertySource;
3.@Configuration和@Bean
/**
* @Configuration:指明当前类是一个配置类,就是来代替之前的Spring配置文件
*
* 相当于在配置文件中 标签添加注解
*/
@Configuration
public class HelloConfig {
@Bean //此注解就是将方法的返回值添加到容器中,容器中这个组件的默认ID就是方法名
public HelloService helloService(){
return new HelloService();
}
}
3.配置文件占位符
例如:(yml)
person:
lastName: xiwen${random.uuid}
age: 18
boss: true
birth: 2018/07/07
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaowu
dog:
name: 小狗
age: 2
4.激活指定profiles
5.配置文件加载位置
6.外部配置加载顺序(所有加载配置来源)
命令行参数:java -jar game-0.0.1-SNAPSHOT.jar --server.port=8080 --server.context-path=/abc
多个配置用空格分开;--配置项=值
7.自动配置的原理
备注:在yml中添加配置即可
#开启Spring Boot的debug,可以打印出自动配置报告
debug: true