配置文件值注入
@ConfigurationProperties
@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关
的配置进行绑定,一般都是将applicatio.properties或者application.yml里面的K:V配
置根据prefix前缀名进行映射
javaBean对象
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
配置文件 application.yml
person:
lastName: haha
age: 18
boss: false
birth: 2022/01/01
maps: {k1: v1,k2: v2}
lists:
- lisi
- wangwu
dog:
name: 芒果
age: 1
配置文件application.properties
#解决乱码问题
spring.message.encoding=UTF-8
#person
person.last-name=haha
person.age=20
person.birth=2019/02/02
person.boss=true
person.maps.k1=v1
person.maps.k2=v2
person.lists=a,b,c
person.dog.name=x想
person.dog.age=5
-@Value
@ConfigurationProperties 与 @Value 的区别:
- @ConfigurationProperties 是批量注入配置文件中的属性,@Value 是一个个指定
- @ConfigurationProperties 支持松散绑定(松散语法) 、不支持SpEL(表达式如#{2*4})、支持JSR303数据校验 、支持复杂类型封装(如map)
- @Value 不支持松散绑定(松散语法) 、支持SpEL、不支持JSR303数据校验 、不支持复杂类型封装
我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value
松散绑定:
– person.firstName:使用标准方式
– person.first-name:大写用-
– person.first_name:大写用_
– PERSON_FIRST_NAME:推荐系统属性使用这种写法
JSR303数据校验:
@ImportResource
导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
@ImportResource(locations = {"classpath:beans.xml"})
导入Spring的配置文件让其生效
@PropertySource
// @PropertySource告诉SpringBoot将本类中的所有属性和配置文件中相关
// 的配置进行绑定,一般都是将指定的配置文件里面的K:V配置进行映射
@PropertySource(value = {"classpath:person.properties"})
@Component
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
- @Bean
配置类@Configuration------>类似Spring xml配置文件
使用@Bean给容器中添加组件,类似于初始化一个可以被spring容器加载的bean