我对春季国际奥委会有这个具体问题。我想使用 spring 实现运行时多态性。
如果不是这样,我能够实现相同的使用,但是我想知道一个适当的弹簧方式。
要求:
我有界面 我的界面 .
ImplA&ImplB实现了MyInterface。
我有一个发送"A"或"B"的服务。根据请求参数,我想在我的控制器中注入ImplA或ImplB。
请建议在春季使用依赖注入实现相同内容的最佳方法
如果您使用 Spring 注释基本配置,请尝试一下:
@Bean(name = "aImpl")
public MyInterface a() {
return new AImpl();
}
@Bean(name = "bImpl")
public MyInterface b() {
return new BImpl();
}
要正确获取接口实例,请使用@Qualifier
澄清 Bean 名称
@Autowired
@Qualifier("a")
MyInterface aImpl;
@Autowired
@Qualifier("b")
MyInterface bImpl;
有很多方法可以实现这一点。从我的角度来看,有几个想法:
- 使用工厂模式根据参数值返回所需的 bean。
- 将两个 bean 都放在 map 中,并使用参数值作为键。当你需要豆子时,从地图上获取它。
如果您需要更多信息,请告诉我。
您可以在控制器方法中使用applicationContext.getBean("beanName")
。下面是一个示例程序。您可以根据自己的情况以这种方式获得正确的提示。