- 我们了解完 @ConfigurationProperties 注解的使用,知道了它可以将 application.yml 或 application.properties 主配置文件中的属性值与 Java Bean 对应属性进行注入。
- 此时就引出另一个问题,如果所有属性值都配置在主配置文件 中,主配置文件就会越来越庞大,这显然是不合适的。此时我们可以使用 Spring 为我们提供的 @PropertySource 注解,去加载指定的配置文件。结合 @ConfigurationProperties 注解,便能够实现指定配置文件与 Java Bean 的注入操作
- 自定配置文件如下
- person.properties
person.name=张三
person.age=27
person.manager=true
person.birthday=2020/03/27
注
yaml文件中的属性不能通过 @PropertySource 注解来访问。所以,如果你的项目中使用了一些自定义属性文件,建议不要用yaml
单属性注入(@PropertySource & @Value)
当@PropertySource引用配置文件后,直接使用@value注解到参数上
示例
- person.java
@Component
@PropertySource(value = {"classpath:person.properties"}) //读取自定义的配置文件
public class Person{
@Value("${person.name}")
private String name;
@Value("${person.name}")
private int age;
@Value("${person.name}")
private boolean isManager;
@Value("${person.name}")
private Date birthday;
}
多属性注入(@PropertySource & @ConfigurationProperties)
当@PropertySource引用配置文件后,可以使用@ConfigurationProperties()注解的prefix属性指定参数前缀,spring boot会根据匹配的前缀参数批量注入到类成员变量中
示例
- person.java
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = {"classpath:person.properties"}) //读取自定义的配置文件
public class Person{
private String name;
private int age;
private boolean isManager;
private Date birthday;
}