我在springboot应用程序的application.properties中有以下内容(1.5.4.RELEASE)
my.prefix.one.id=id01
my.prefix.one.name=one
my.prefix.two.id=id02
my.prefix.two.name=two
还有一个如下的课程
public class MyClass{
private String id;
private String name;
//getters and setters
}
如果我使用@ConfigurationProperties(prefix =“my.prefix.one”),那么我得到一个id字段为“id01”的MyClass bean。
有没有办法指示springboot扫描扫描所有带有前缀“my.prefix”的属性并创建多个bean。在这种情况下,两个bean - 具有id字段“id01”的bean和具有id字段“id02”的bean?
你应该使用spring qazxsw poi并在你的qazxsw poi中使用嵌套类
@ConfigurationProperties
然后你就可以像访问它一样
MyClass
最好的办法是通过@ConfigurationProperties(prefix="my.prefix")
public class MyClass{
private One id01;
private Two id02;
//GETTER SETTER
public static class One {
private String id;
// GETTER SETTER
}
public static class Two {
private String id;
// GETTER SETTER
}
}
阅读
更新:OP不想使用嵌套类来检索这些字段
myClass.getOne().getId();
现在你可以使用它们了
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties
由于您使用的是弹簧靴,您还可以:
@ConfigurationProperties(prefix="my.prefix")
public class MyClass{
private String id01;
private String id02;
@NotNull
private One one;
@NotNull
private Two two;
public getId01(){
return one.id;
}
public getId02(){
return two.id;
}
public static class One {
private String id;
// GETTER SETTER
}
public static class Two {
private String id;
// GETTER SETTER
}
}
我不知道有任何有意义的方法来避免配置单个bean。
但是,如果您真的想要这样做,您可以访问ApplicationContext并手动处理属性并将bean注入Applicationcontext,我个人更喜欢将多个bean方法添加到配置类而不是直接操作ApplicationContext。