【问题标题】:Injecting a bean at runtime在运行时注入 bean
【发布时间】:2016-11-09 17:02:31
【问题描述】:

我们可以在运行时将 bean 注入服务吗?我正在开发一个 Spring MVC 应用程序,并且有两个使用相同功能的不同 bean。我需要在运行时根据一些参数注入一个 bean。我在春季如何做到这一点?

【问题讨论】:

标签: spring spring-mvc


【解决方案1】:

如果你想在已经创建的 bean 之间切换 然后使用这个方法

类中的Autowire ApplicationContext

@Autowired ApplicationContext ctx;

在方法中,只需从 ApplicationContext 获取这些 bean 并在它们之间切换。我会使用一个接口,然后让这 2 个(或更多)类(您想在运行时切换)实现该接口,这样就会有一个契约。

BeanInterface beanName; 
if (x){
  beanName = (BeanClass1) ctx.getBean("beanClass1");
}
else{
  beanName = (BeanClass2) ctx.getBean("beanClass2");
}

免责声明:没有对此进行测试,如果这不起作用,您可能需要进行一些调整。

如果您甚至希望 bean 创建基于某些运行时参数,请查看此处https://stackoverflow.com/a/34350983/6785908

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    相关资源
    最近更新 更多