在 Spring 可以将 @Autowired bean与类和 @Qualifier 一起使用。

如何以编程方式做同样的事情? IE。搜索上下文中给出它的类和限定符的bean?

我看到了很多 getBean() 方法,但它们都没有明确声明它可以做到这一点。

最佳答案

您可以使用BeanFactoryAnnotationUtils.qualifiedBeanOfType(BeanFactory beanFactory, Class<T> beanType, String qualifier):

/**
     * Obtain a bean of type {@code T} from the given {@code BeanFactory} declaring a
     * qualifier (e.g. via {@code <qualifier>} or {@code @Qualifier}) matching the given
     * qualifier, or having a bean name matching the given qualifier.
     * @param beanFactory the BeanFactory to get the target bean from
     * @param beanType the type of bean to retrieve
     * @param qualifier the qualifier for selecting between multiple bean matches
     * @return the matching bean of type {@code T} (never {@code null})
     * @throws NoUniqueBeanDefinitionException if multiple matching beans of type {@code T} found
     * @throws NoSuchBeanDefinitionException if no matching bean of type {@code T} found
     * @throws BeansException if the bean could not be created
     * @see BeanFactory#getBean(Class)
     */
    public static <T> T qualifiedBeanOfType(BeanFactory beanFactory, Class<T> beanType, String qualifier)
            throws BeansException;

我认为这正是您所需要的。

关于java - 如何以编程方式获取带有类和限定符的bean?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37943409/

10-12 00:33