@Value 注入属性值(补充)

博客围绕Java中注解注入展开。此前发现@Value注解属性在InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法注入,但不知具体实现类。通过学习@Autowire注解注入时机,发现AutowiredAnnotationBeanPostProcessor类能处理@Autowired和@Value注解,二者均通过该类实现注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在@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实现注入的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值