Spring注释配置-基于YAML配置

时间:2019-04-25 11:48:05

标签: 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和其他注释?

在创建实例时是否可以在运行时将配置传递给类?

对此有任何帮助。

谢谢

Avinash Deshmukh

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

创建一个简单的带有@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
}

现在,我假设您只是想通过注入代码来访问代码中不同的“ 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");
  }
}