为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2022-10-20 16:59:10
我是 Spring 注释的新手。我有以下 YAML 配置:configLists:    - listItem1   - listItem2mainConfig:   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 Annotations 和配置的帮助下,我想动态地创建类。即由于在 mainConfig listItem1 和 listItem2 下有两个配置,因此应用程序应仅在单个类的帮助下创建两个实例。如何在 Spring Boot 应用程序中使用 @Bean、@Configuration 和其他注解?是否可以在创建实例时将运行时的配置传递给类?对此的任何帮助表示赞赏。谢谢,阿维纳什·德什穆赫
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以执行以下操作:


创建一个简单的 bean 类,注释@ConfigurationProperties如下:


@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");

  }

}


查看完整回答
反对 回复 2022-10-20
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号