首先在配置文件中配置好相关属性,配置时要注意语法格式。
person:
name: zhangsan #String 类型
age: 20 #Integer 类型
birth: 2000/01/01 #Date 类型
boss: true #Boolean 类型
maps: { A1: 1,A2: 2,A3: 3} #Map
lists: [A1,A2,A3] #List
dog: #对象
name: dog
age: 2
birth: 2018/01/01
这里声明一个Dog类用于测试对象属性的绑定和值的注入
@Data
public class Dog {
private String name;
private Integer age;
private Date birth;
}
1、使用@ConfigurationProperties 注解注入值:在类上添加 @ConfigurationProperties 注解可以告诉Spring Boot将本类中所有属性和配置文件中相关配置进行绑定,使用prefix = “” 指定和配置文件中哪个下面的所有属性进行 一 一 映射,默认应用于全局配置文件。可以使用@PropertySource 注解加载指定配置文件,但是如果全局配置文件中也有相关属性,全局配置文件优先。@ConfigurationProperties 注解支持松散语法绑定,支持js303数据校验,但不支持Spring表达式。只有该组件在容器中才能使用。
@Component
//将本类中所有属性和全局配置文件中person下的所有属性进行绑定
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
private String name;
private Integer age;
private Date birth;
private Boolean boss;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
使用@ConfigurationProperties 注解需要导入以下依赖
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
输出结果
Person(
name = zhangsan,
age = 20,
birth = Sat Jan 01 00:00:00 CST 2000,
boss = true,
maps = {A1=1, A2=2, A3=3},
lists = [A1, A2, A3],
dog = Dog( name=dog,
age=2,
birth=MonJan 01 00:00:00 CST 2018)
)
2、使用@Value注解注入值:@Value 注解通过配置文件获取相关属性配置,默认应用于全局配置文件。可以使用@PropertySource 注解加载指定配置文件,但是如果全局配置文件中也有相关属性,全局配置文件优先。也可以通过Spring表达式指定属性值或者直接指定属性值。@Value 注解不能使用于复杂类型封装,并且需要放在容器中才能使用,不支持松散语法绑定,不支持js303数据校验,支持Spring表达式。
@Component
@Data
public class Person {
@Value("${person.name}") //从配置文件中获取相关属性配置进行绑定
private String name;
@Value("#{11*2}") //通过Spring表达式指定属性值
private Integer age;
@Value("2000/02/02") //直接指定属性值
private Date birth;
@Value("true") //直接指定属性值
private Boolean boss;
//复杂类型封装,不支持@Value,支持@ConfigurationProperties
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
输出结果
Person(
name = zhangsan989dc200-05a1-4573-8a08-abd983eb4905,
age = 22,
birth = Wed Feb 02 00:00:00 CST 2000,
boss = true,
maps = null,
lists = null,
dog = null
)