51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

SpringBoot如何获取Bean列表

# SpringBoot如何获取Bean列表 {#springboot如何获取bean列表}

在使用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;
}

原文链接:https://my.oschina.net/kut/blog/831755

赞(3)
未经允许不得转载:工具盒子 » SpringBoot如何获取Bean列表