java - Spring Annotation Configs - 基于 YAML 配置动态创建类

标签 java spring

我是 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/

相关文章:

java - 使用 Blob 获取图像并保存到 Google App Engine

java - 如何为使用 JSON JAXB 绑定(bind)的 Jersey REST API 生成文档?

java - 转义 SPARQL 查询中的特殊字符

基于 Spring Batch block 的方法在 Item Writer 中调用 REST API

java - Spring Security OpenID - UserDetailsS​​ervice,AuthenticationUserDetailsS​​ervice

java - 在 Tomcat 服务器上的 Spring 应用程序中获取端口号和主机名

java - 如何在baseUrl中调用没有反斜杠的改造

java - (null != key) 与 (key != null) 相同吗

Spring 测试对服务事务的影响

java - MethodValidationInterceptor 和@Validated @ModelAttribute