风也温柔

计算机科学知识库

java反射动态注入方法-Spring源码解析

  的bean创建流程

  当我们对深入了解后,我们会发现对bean的创建和管理的流程是很清晰的明了的,通过这篇文章了解加载.xml,其实创建bean的整个流程可以简化成以下几个大流程:

  首先,会先准备哪些bean是交由它创建的,这就是加载.xml这篇文章里面讲到的,加载配置文件其实就是为了后续创建实例化bean而做的准备阶段,怎么让知道自己要加载和创建哪些bean呢?这是通过提供的各个注解来实现,通过、、等注解以及配置文件里面定义的bean等等方式,可以扫描这些bean(当然你要做相应的配置,才会去扫描),并为他们准备了后续要创建bean所需要的信息,在里叫做。

  其次,当准备阶段做完后,就会开启实例化bean的过程,就是遍历所有的需要初始化的java反射动态注入方法-Spring源码解析,然后实例化这些bean,但是实例化bean,实际上里面的属性和方法(注解了@等注解的)对象是未实例化的,所以当创建了bean之后我们就需要去为这些目标bean里面注入他所需要的实例对象,这就是我们在下面要讲的重点,的依赖注入。

  最后,实例化完bean之后,就是遍历每个目标bean里面被注解、Value等注解标识的属性以及方法,然后实例化这些元素,然后依赖注入。

  控制反转和依赖注入

  在我看来java反射动态注入方法,控制反转和依赖注入是同一种概念,两种的唯一区别就是,控制反转是在理论层面上提出来的,而依赖注入更偏向于实现层面上的,简单来说,依赖注入是控制反转的一种实现形式,并无差别。在中bean的创建就是通过依赖注入的形式实现控制反转的。

  的依赖注入的整个流程,首先会遍历所有需要实例化的bean ,先根据这些实例化bean接下来就是为实例化好的bean,这时候我们称该bean为目标bean,为目标bean注入相应的实例对象,这些对象可以通过属性注入和方法注入两种方式来实现。

  其次,会找到目标bean里面的所有被、Value注解的属性和方法,然后执行创建实例化bean操作并返回值;

  最后,通过返回的值反射注入到对应的对象,整个流程就结束了。整个流程如下:

  Spring源码解析-AutowiredAnnotationBeanPostProcessor依赖注入

  简介

  是的实现类,能够自动装配被注解、Value注解的属性、方法以及配置方法,这些类成员能够被自动的检测到并注入。当然,还支持JSR-330的注解。简单来讲,就是个依赖注入的后置处理器。

  只提供一个构造方法,该构造法设置了处理器能够支持哪些注解,默认情况下支持3种、Value以及,构造方法如下:

<p><pre>public AutowiredAnnotationBeanPostProcessor() {

    this.autowiredAnnotationTypes.add(Autowired.class);
    this.autowiredAnnotationTypes.add(Value.class);
    try {
        this.autowiredAnnotationTypes.add((Class