@Value 注入属性值(补充)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/changyayun/article/details/82117736

在@Value 注入属性值(下)中发现
@Value注解注释的属性是在InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法注入到bean中的。
但是当时并没有发现是在哪一个实现了postProcessPropertyValues接口的类中对@value注解进行了注入。
今天通过学习@Autowire注解的注入时机,有了新的发现

 1public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter implements MergedBeanDefinitionPostProcessorPriorityOrderedBeanFactoryAware {
2            private final Set<Class<? extends Annotation>> autowiredAnnotationTypes = new LinkedHashSet();
3
4      public AutowiredAnnotationBeanPostProcessor() {
5        this.autowiredAnnotationTypes.add(Autowired.class);
6        this.autowiredAnnotationTypes.add(Value.class);
7
8        try {
9            this.autowiredAnnotationTypes.add(ClassUtils.forName("javax.inject.Inject", AutowiredAnnotationBeanPostProcessor.class.getClassLoader()));
10            this.logger.info("JSR-330 \'javax.inject.Inject\' annotation found and supported for autowiring");
11        } catch (ClassNotFoundException var2) {
12            ;
13        }
14
15    }
16}

AutowiredAnnotationBeanPostProcessor是InstantiationAwareBeanPostProcessor 的一个实现类。
autowiredAnnotationTypes 是AutowiredAnnotationBeanPostProcessor类所能处理的注解。
而正好在AutowiredAnnotationBeanPostProcessor类的构造函数中添加了两个注解类
Autowired.class
Value.class
所以可以看出@Autowired和@Value注解都是通过AutowiredAnnotationBeanPostProcessor实现注入的。

猜你喜欢

转载自blog.csdn.net/changyayun/article/details/82117736