spring - 如何在基于属性的spring自定义启动器中动态创建bean
问题描述
我正在编写一个自定义spring starter,我需要根据application.properties中定义的属性注册一个相同类型的bean列表
我在 application.properties 中有以下属性
mybean.names = mybean1, mybean2
mybean1.foo = foo1
mybean2.foo = foo2
mybean1.bar = bar1
mybean2.bar = bar2
自动配置类的当前实现如下
@Configuration
@ConditionalOnClass(MyBeanFactory.class)
public class MyBeanAutoConfiguration {
@Autowire
Environemnt evn;
@Bean(name = {"mybean1"})
public MyBean getBean() {
String[] names = StringUtils.commaDelimitedListToStringArray(evn.getProperty("mybean.names"));
MyBean mybean = new Mybean(evn.getProperty(names[0] + ".foo"),
evn.getProperty(names[0] + ".bar"));
return myBean;
}
}
我想在 Spring Boot 应用程序中简单地用 qualifer 自动装配我的 bean,如下所示
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
@Autowired
@Qualifer("mybean1")
MyBean mybean;
public static void main(String[] args) {
SpringApplication.run(VaultApplication.class, args);
}
如何更改我的自动配置类以创建具有在属性文件中定义的不同名称的多个 bean(在这种情况下,我如何创建 bean mybean2),以便我可以简单地使用带有限定符的自动装配?
解决方案
我不确定我是否理解你的问题,但是如果你想拥有几个不同名称的 bean,那么最好的方法是在你的配置类中编写多个不同名称的 @Bean 方法,这样你就可以通过 @Qualifer 自动装配它们中的每一个
推荐阅读
- node.js - 脚本在一定时间后退出
- github - 无法显示我对在 GitHub 中镜像的项目所做的贡献
- spring-boot - Spring Boot 微服务部署
- javascript - 使用 axios 将 api 调用中的数据解析为文本文件
- hyperledger-fabric - 在超级账本结构 2.2 中不存在 CA“未定义”的错误
- docker - 是否可以通过 Docker 设置 IBM 数据阶段?
- android - Android TextView 在 Kotlin 中显示致命错误
- c# - Linq 按孩子的数量查询顶级父母,包括这个数字
- promise - 如何在一系列承诺中等待子组件中的事件?
- c - 打印数组中重复数的最大计数