Spring注入 @Autowired和setter方式区别原理

2019-01-15  本文已影响0人  IT菜鸟学习

spring 的注入方式有:setter、constructor、静态工厂方法、实例工厂方法、注解@Autowired自动装配几种方式。
@Autowired,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。
今天我们要了解的是:setter和@Autowired两种方式的区别,常用的setter方式很好理解,通过调用Bean的属性setter方法直观的赋值即可。而@Autowired方式,没有setter方法赋值又是通过什么方式实现的呢?看一下spring源码:

1、AbstractAutowireCapableBeanFactory类中的autowireBean()方法

image.png

populateBean()方法:


image.png

2、AutowiredAnnotationBeanPostProcessor类中通过postProcessPropertyValues()方法很容易找到内部类AutowiredFieldElement.inject()方法:


image.png

通过上面的代码很容易了解到,@Autowired方式是通过反射来设置属性值的,噢。。。。。。。。。万能而无节操的反射,明白了吧
转自:https://blog.csdn.net/wenluoxicheng/article/details/73608657

上一篇 下一篇

猜你喜欢

热点阅读