我是 Spring 注释新手。
我有以下 YAML 配置:
configLists:
- listItem1
- listItem2
mainConfig:
listItem1:
listingName: listItem1
property1: testing-value-1
property2: testing-value-2
storageprop: example/storage/loc-2
listItem2:
listingName: listItem2
property1: testing-value-1
property2: testing-value-2
storageprop: example/storage/loc-2
借助 Spring 注解和配置,我想动态创建类。即,由于 mainConfig listItem1 和 listItem2 下有两个配置,因此应用程序应该仅在单个类的帮助下创建两个实例。
如何在 Spring boot 应用程序中使用 @Bean、@Configuration 和其他注释?
是否可以在创建实例时将运行时的配置传递给类?
任何有关此问题的帮助都将不胜感激。
谢谢
阿维纳什·德什穆克
最佳答案
您可以执行以下操作:
创建一个用@ConfigurationProperties
注释的简单bean类,如下所示:
@Component
@ConfigurationProperties("mainConfig")
public class AppProperties {
private Map<String, ListItem> listItems;
public static class ListItem {
private String listingName;
private String property1;
private String property2;
private String storageProp;
// setters, getters
}
// setters, getters
}
现在,我假设您只想通过注入(inject)来访问代码中不同的“listItem”属性。
在配置类中创建bean:
@Configuration
class AppConfiguration {
@Autowired
private AppProperties appProperties;
@Bean("listItem1")
public ListItem useListItem1() {
return appProperties.getListItems().get("listItem1");
}
@Bean("listItem2")
public ListItem useListItem2() {
return appProperties.getListItems().get("listItem2");
}
}
关于java - Spring Annotation Configs - 基于 YAML 配置动态创建类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55848616/