技巧:在Spring中如何获取某类Bean列表

原创
2017/02/04 18:06
阅读数 773

在使用Spring的时候,我们常常需要收集一类Bean,然后通过Autowired把它加到我们的Bean中。这里讲解两个办法,一种方法是通过类型,别一种方法则是通过注解。

方法一:类型

首先我们定义一个接口,比方说是Provider

public interface Provider
{

}

然后实现一堆Providers:

@Component
public class OneProvider implements Provider
{

}

@Component
public class TwoProvider implements Provider
{

}

我们想把所有实现了Provider接口的Bean都放到我的Manager类实例中:

@Component
public class ProviderManager
{
    // 这里注入了所有类型是Provider的Bean
    @Autowired
    private List<Provider> providers;
}

这种方法有点问题,就是所有的Bean都要实现一个接口类型,如果是一些第三方类库的类的话,它就不能用了。那我们用第二种方法,注解。

方法二:注解

首先我们要先定义一个用来做标记用的注解:

@Target({ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Qualifier // 这一行是重点
public @interface Provider
{
}

然后同样的,我们要定义一些Bean类,当然,我们要用我们定义的Provider进行注解标记:


@Component
@Provider
public class OneProvider
{

}

@Component
@Provider
public class TwoProvider
{

}

我们想把所有标记了Provider注解的Bean都放到我的Manager类实例中:

@Component
public class ProviderManager
{
    // 这里注入了所有标记了`Provider`注解的Bean
    @Autowired
    @Provider
    private List<Object> providers;
}
展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部