CustomAutowireConfigurer.java 文件源码

java
阅读 31 收藏 0 点赞 0 评论 0

项目:lams 作者:
@Override
@SuppressWarnings("unchecked")
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    if (this.customQualifierTypes != null) {
        if (!(beanFactory instanceof DefaultListableBeanFactory)) {
            throw new IllegalStateException(
                    "CustomAutowireConfigurer needs to operate on a DefaultListableBeanFactory");
        }
        DefaultListableBeanFactory dlbf = (DefaultListableBeanFactory) beanFactory;
        if (!(dlbf.getAutowireCandidateResolver() instanceof QualifierAnnotationAutowireCandidateResolver)) {
            dlbf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
        }
        QualifierAnnotationAutowireCandidateResolver resolver =
                (QualifierAnnotationAutowireCandidateResolver) dlbf.getAutowireCandidateResolver();
        for (Object value : this.customQualifierTypes) {
            Class<? extends Annotation> customType = null;
            if (value instanceof Class) {
                customType = (Class<? extends Annotation>) value;
            }
            else if (value instanceof String) {
                String className = (String) value;
                customType = (Class<? extends Annotation>) ClassUtils.resolveClassName(className, this.beanClassLoader);
            }
            else {
                throw new IllegalArgumentException(
                        "Invalid value [" + value + "] for custom qualifier type: needs to be Class or String.");
            }
            if (!Annotation.class.isAssignableFrom(customType)) {
                throw new IllegalArgumentException(
                        "Qualifier type [" + customType.getName() + "] needs to be annotation type");
            }
            resolver.addQualifierType(customType);
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号