java - 在运行时动态加载适当的spring bean
问题描述
我需要根据特定条件动态加载一个spring bean。我正在调用外部服务。如果服务返回 true ,我需要注入 bean a ,否则我需要注入 bean b 。bean a 和 bean b 都实现了相同的接口。我使用的是 spring 4.1.4 但不是 spring boot。
解决方案
考虑到你没有使用 Spring Boot,我想你可以尝试这样的事情:
@Lazy
@Bean("myBean1")
public MyBean getBean1() { return new MyBean1();}
@Lazy
@Bean("myBean2")
public MyBean getBean2() { return new MyBean2();}
private void myFunction(ApplicationContext context) {
MyBean myBean;
if(condition == true) {
myBean = context.getBean("myBean1");
} else {
myBean = context.getBean("myBean2");
}
}
推荐阅读
- java - 通过键从HashMap中获取值
- google-apps-script - 在电子表格中切换工作表时如何触发功能?
- hibernate - netbeans 11.0 版是否有休眠插件?
- r - 使用 dplyr 创建一个通用的描述表
- c++ - C++ => 没有构造函数可以采用源类型,或者构造函数重载决议不明确
- php - 正则表达式匹配不在特定 div 中的标题标签
- javascript - 如何让 magnific popup 与数组一起使用
- python - Keras 中 LSTM 模型训练一个时期中步数的重要性
- php - 使用 date_sunrise() 和 date_sunset() php 计算白天和晚上的时间量
- wordpress - WPForo 插件。登录现在是 wp-adminlogin,我会根据我使用的计算机获得不同的菜单?