java - 在另一个 spring bean 中声明了 spring bean

标签 java spring

@Component
public class IServiceCollection {
  @Resource
  private IService service1;
  @Resource
  private IService service2;
  @Resource
  private IService service3;
  @Resource
  private IService service4;
  @Resource
  private IService service5;

  public List<IService> getAllServices(){
    List<IService>  iServiceList =  new ArrayList<IService>();

    iServiceList.add(service1);
    iServiceList.add(service2);
    return iServiceList;
  }
}

IServiceCollection 中,我将引用很多 IService bean,例如 service1servvice2 等。我想得到方法 getAllServices() 中的所有服务 bean。

如何自动将所有服务添加到列表中,而不是像上面的代码那样?

最佳答案

您有几个选择:

.1。如果您以这种方式注入(inject) map :

@Component
public class IServiceCollection {
  @Autowired
  private Map<String, IService> services;

这将注入(inject) IService 的所有实现,映射的键是 bean 名称

.2。您可以通过这种方式注入(inject)列表:

@Component
public class IServiceCollection {

  @Autowired
  private List<IService> services;

您将再次获得 IService 实例列表。

关于java - 在另一个 spring bean 中声明了 spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442148/

相关文章:

java - 重新启动应用程序后 SQLite DB 被删除

Java RMI-线程的意外行为

java - 如何在 JUnit 测试中覆盖私有(private)方法

java - Spring 响应式(Reactive)事务在取消时提交,产生部分提交

Java 框架 war : Spring and Hibernate

java - 使用aspectJ的AOP中的Joinpoint VS ProceedingJoinPoint?

java - 如何封装未经检查的强制转换以仅允许未经检查的泛型类型转换?

java - 是否可以忽略异常?

spring - java.lang.NoClassDefFoundError : org/springframework/web/context/ContextCleanupListener issue

java - 将 Java Spring Rest Controller 中发布的 JSON 映射到 POJO