您的位置:首页 > 编程语言 > Java开发

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

2017-06-22 17:04 417 查看
spring 的注入方式有:setter、constructor、静态工厂方法、实例工厂方法、注解@Autowired自动装配几种方式。

今天我们要了解的是:setter和@Autowired两种方式的区别,常用的setter方式很好理解,通过调用Bean的属性setter方法直观的赋值即可。而@Autowired方式,没有setter方法赋值又是通过什么方式实现的呢?看一下spring源码:

1、AbstractAutowireCapableBeanFactory类中的autowireBean()方法



populateBean()方法:



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



通过上面的代码很容易了解到,@Autowired方式是通过反射来设置属性值的,噢。。。。。。。。。万能而无节操的反射,明白了吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: