Spring的 @Autowired注解底层原理

前言


使用 Spring 开发时,进行配置主要有两种方式,一是 xml 的方式,二是 Java config 的方式。Spring 技术自身也在不断的发展和改变,从当前 Springboot 的火热程度来看,Java config 的应用是越来越广泛了,在使用 Java config 的过程当中,我们不可避免的会有各种各样的注解打交道,其中,我们使用最多的注解应该就是 @Autowired 注解了。

@Autowired 注解的作用

首先,我们从所属范围来看,事实上这个注解是属于 Spring 的容器配置的一个注解,与它同属容器配置的注解还有:@Required, @Primary, @Qualifier 等等。因此 @Autowired 注解是一个用于容器(container)配置的注解。

其次,我们可以直接从字面意思来看,@autowired 注解来源于英文单词 autowire,这个单词的意思是自动装配的意思。自动装配又是什么意思?这个词语本来的意思是指的一些工业上的用机器代替人口,自动将一些需要完成的组装任务,或者别的一些任务完成。而在 Spring 的世界当中,自动装配指的就是使用将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起。

因此,笔者个人对这个注解的作用下的定义就是:将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起协同使用。

@Autowired 注解的实现

下面是 Spring 容器如何实现 @AutoWired 自动注入的过程的图:

 注解实现注入主要是通过 bean 后置处理器 BeanPostProcessor 接口的实现类来生效的。BeanPostProcessor 后置处理器是在 spring 容器启动时,创建 bean 对象实例后,马上执行的,对 bean 对象实例进行加工处理。@Autowired 是通过 BeanPostProcessor 接口的实现类AutowiredAnnotationBeanPostProcessor 来实现对 bean 对象对其他 bean 对象的依赖注入的。
 

总结起来一句话:使用 @Autowired 注入的 bean 对于目标类来说,从代码结构上来讲也就是一个普通的成员变量,@Autowired 和 Spring 一起工作,通过反射为这个成员变量赋值,也就是将其赋为期望的类实例。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值