在运行时注入bean

时间:2016-11-09 17:02:32

标签: spring spring-mvc

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

1 个答案:

答案 0 :(得分:0)

如果要在已创建的bean之间切换 然后使用方法

在类

中自动装配ApplicationContext
@Autowired ApplicationContext ctx;

在方法中,只需从ApplicationContext中获取这些bean并在这些bean之间切换。我会使用一个接口,然后让那两个(或更多)类(你想在运行时切换)实现接口,以便有一个合同。

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

免责声明:没有对此进行测试,如果不能正常工作,可能需要进行一些调整。

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