java - 如何在 Spring 中通过默认限定符 bean 名称获取 @Service bean

标签 java spring

我有很多 ServiceImpl bean,但我想通过其默认名称访问特定 bean,例如

 class SuperServiceImpl {}

 class UserServiceImpl extends SuperServiceImpl {}

 class PlaceServiceImpl extends SuperServiceImpl {}

 public SuperServiceImpl getServiceImpl(String qualifierName) {
       // if qualifierName="userServiceImpl"
       //   return UserServiceImpl
 }

我尝试实现以下解决方案

Auto-cast Spring Beans

但我没有在 ApplicationContext 引用上获取 getBean() 方法。

最佳答案

return applicationContext.getBean(qualifierName, SuperServiceImpl.class) 您可能想要为 SuperServiceImpl 定义一个接口(interface)并使用 return applicationContext.getBean(qualifierName, SuperService) .class) 相反,特别是如果您有多个实现。

当然,要实现这一点,您需要正确定义您的 bean:

  • 对于 XML,限定符是 bean 元素的 id 属性
  • 对于 Javaconfig,默认情况下方法的名称是 bean 名称。当然,您可以使用 @Bean 注释的 name 属性覆盖它

关于java - 如何在 Spring 中通过默认限定符 bean 名称获取 @Service bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23752944/

相关文章:

Java HttpClient 可信证书

java - 在Java逻辑中构建倒排索引

java - 在 Java 中使用 Google 翻译服务 api

java - 在类 * 中找不到属性 * 的 setter

spring - GWT + Spring 托管模式不起作用

java - 如何为java自定义注释提供属性占位符支持

java - 如何在 REST 应用程序上使用 SOAP Web 服务

java - Java垃圾收集器会回收包含对其他对象的引用的非引用对象吗

java - spring3构建错误

java - Android scrollview 去除蓝光