一、问题描述
在SpringBoot框架中使用@ConfigurationProperties("xxx")注解无法注入application.properties文件中的配置的属性。
- application.properties文件:
data.encryptor.tableName=rs_user,rs_dept
- Java类:
@Component
@ConfigurationProperties("data.encryptor")
public class EncryptUtil{
// 运行时为null
private Set<String> tableName;
// 以下省略方法
}
二、解决方案
这是由于类中缺少tableName属性的Setter方法,使用@ConfigurationProperties("xxx")注解注入属性配置时需要提供该属性Setter方法。
注意:@Value注解不需要Setter方法
- application.properties文件:
data.encryptor.tableName=rs_user,rs_dept
- Java类:
@Component
public class EncryptUtil{
// 运行时为["rs_user","rs_dept"]
@Value("${data.encryptor.tableName}")
private Set<String> tableName;
// 以下省略方法
}
三、总结
究其原因还是因为基础不牢固导致的,日积月累吧。