gpt4 book ai didi

java - 如何从 application.yml 文件注入(inject)属性?

转载 作者:行者123 更新时间:2023-11-30 05:47:59 26 4
gpt4 key购买 nike

我有一些 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);
}
}

我有一个异常(exception):

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 注入(inject)数据?

最佳答案

我这样解决了这个问题:

我将spring注释@Autowired添加到abscratPropertyHolder类,并将spring注释@ConfigurationProperties("main-prop.sub-prop.data")添加到Data类。

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);
}
}

关于java - 如何从 application.yml 文件注入(inject)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54516915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com