面试官常问Autowired的问题,干完这篇文章面试时你可以横着走

本文详细探讨了Spring中的@Autowired注解,包括其如何实现自动装配、处理时机、装配方式以及处理多个实现类的情况。还介绍了Autowired支持的注入类型,并提供了面试时可能遇到的相关问题总结。
摘要由CSDN通过智能技术生成

金三银四,很快又到了招聘旺季了,最近经常需要去做各种面试,发现很多几年工作经验的候选人,对Spring了解也是知之甚少,更多的只是会用,比如一个@Autowired原理都可以问倒一大片。

 

为此,趁着小仙女今天加班,长话短说的聊聊这个话题吧!

@Autowired注解是如何实现自动装配的

@Autowired注解之所以可以实现自动装配,主要是依赖Spring提供的处理器AutowiredAnnotationBeanPostProcessor,该处理器在初始化的时候便加入了对@Autowired、@Inject、@Value三个注解的处理;

该处理器实现了接口InstantiationAwareBeanPostProcessor,因此可以在bean对象实例化的时候,对其使用了@Autowired的成员进行自动装配。

源码参考如下:

public AutowiredAnnotationBeanPostProcessor() {
   // 加入了对@Autowired、@Inject、@Value三个注解的处理
   this.autowiredAnnotationTypes.add(Autowired.class);
   this.autowiredAnnotationTypes.add(Value.class);
   try {
      this.autowiredAnnotationTypes.add((Class<? extends Annotation>)
            ClassUtils.forName("javax.inject.Inject", AutowiredAnnotationBeanPostProcessor.class.getClassLoader()));
      logger.info("JSR-330 'javax.inject.Inject' annotation found and supported for autowiring");
   }
   catch (ClassNotFoundException ex) {
      // JSR-330 API not available - simply skip.
   }
}

该处理器何时被加入的

当构造Spring容器的时候,Spring会向容器注册几个内置的处理器对象,其中就包括了AutowiredAnnotationBeanPostProcessor。

源码可以直接看AnnotationConfigUtils.registerAnnotationConfigProcess

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值