java - 如何从 application.yml 文件中注入属性?
问题描述
我有一些 application.yml 文件:
main-prop:
sub-prop:
name: test
password: test1
data:
prop1: 1
prop2: 0
和类:
abstract class abscractPropertyHolder {
private String namePattern;
private String categoryPattern;
private String departmentPattern;
private Data data;
}
@Component
@ConfigurationProperties("main-prop")
class ReconfigurationEventFilterConfig extends abscractPropertyHolder {
}
@Data
@Accessors(chain = true)
class Data { // if my class is public - my app run successfully, otherwise fail to start (exception).
private int prop1;
private int prop2;
static DatanewInstanceWithDefaultParameters() {
return new Data().setProp1(1).setProp2(0);
}
}
我有这个例外:
Could not instantiate property type [com.test.Data] to auto-grow nested property path;
nested exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate [com.test.Data]: Is the constructor accessible?;
nested exception is java.lang.IllegalAccessException:
Class org.springframework.beans.BeanUtils can not access a member of class
com.test.Data with modifiers "public"
所有课程都放在一个包中。我不想公开我的数据类。如何从 application.yml 注入数据?
解决方案
我解决了这样的问题:
我@Autowired
在 abscactPropertyHolder 类中添加了 spring 注释@ConfigurationProperties("main-prop.sub-prop.data")
,并在 Data 类中添加了 spring 注释。
abstract class abscractPropertyHolder {
private String namePattern;
private String categoryPattern;
private String departmentPattern;
@Autowired
private Data data;
}
@Data
@Accessors(chain = true)
@ConfigurationProperties("main-prop.sub-prop.data")
class Data { // if my class is public - my app run successfully, otherwise fail to
start (exception).
private int prop1;
private int prop2;
static DatanewInstanceWithDefaultParameters() {
return new Data().setProp1(1).setProp2(0);
}
}
推荐阅读
- google-chrome-extension - Chrome 扩展 - 沙盒页面如何访问存储中的数据?
- mysql - 尝试在不存在的地方插入数据抛出:#1242 - 子查询返回超过 1 行
- delphi - Indy Header Last-Modified - 日期编码的参数无效
- react-native - React Native 地理位置权限回调
- python - 如何使用 tensorflow 的权重制作 MLP
- php - 从多维数组 PHP 中搜索和检索
- entity-framework - 在没有 ModelState.IsValid 的情况下检查模型是否有效
- c++ - 如何在 Google Test 中的公共方法使用的类中模拟私有方法?
- c++ - 将 shared_ptr 的 c 向量转换为 NSArray 目标C
- google-apps-script - 将触发器移动到电子表格的副本