首页 > 解决方案 > 在运行时动态加载适当的spring bean

问题描述

我需要根据特定条件动态加载一个spring bean。我正在调用外部服务。如果服务返回 true ,我需要注入 bean a ,否则我需要注入 bean b 。bean a 和 bean b 都实现了相同的接口。我使用的是 spring 4.1.4 但不是 spring boot。

标签: javaspring

解决方案


考虑到你没有使用 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");
    }
}

推荐阅读