使用春季 IOC 的运行时多态性



我对春季国际奥委会有这个具体问题。我想使用 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;

有很多方法可以实现这一点。从我的角度来看,有几个想法:

  1. 使用工厂模式根据参数值返回所需的 bean。
  2. 将两个 bean 都放在 map 中,并使用参数值作为键。当你需要豆子时,从地图上获取它。

如果您需要更多信息,请告诉我。

您可以在控制器方法中使用applicationContext.getBean("beanName")。下面是一个示例程序。您可以根据自己的情况以这种方式获得正确的提示。

最新更新