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

来源:互联网 发布:网络监控显示不在线 编辑:程序博客网 时间:2024/06/09 15:11

spring 的注入方式有:setter、constructor、静态工厂方法、实例工厂方法、注解@Autowired自动装配几种方式。

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

1、AbstractAutowireCapableBeanFactory类中的autowireBean()方法


populateBean()方法:


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

通过上面的代码很容易了解到,@Autowired方式是通过反射来设置属性值的,噢。。。。。。。。。万能而无节操的反射,明白了吧

阅读全文
2 0
原创粉丝点击