什么是Spring

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器。
Spring框架的两大核心功能:IOC和AOP


IOC容器

什么是IOC容器:控制反转,把创建对象与对象之间的调用过程交给Spirng去管理
使用IOC的目的:降低耦合度
IOC的底层原理:XML解析、工厂模式、反射

IOC容器的底层就是对象工厂
大致流程:
在对象工厂里,首先通过加载xml配置文件进行解析,获取相关类的路径,然后运用反射获取该类的字节码文件,最后通过字节码文件调用newInstance() 方法创建这个类的对象并返回

IOC接口:
Spring提供IOC容器实现的两种方式:

  • BeanFactory:IOC容器的基本实现。它是Spring内部使用的接口,一般不提供给开发人员使用。
  • ApplicationContext:它是BeanFactory的子接口,提供了更多更强大的功能,一般由开发人员使用。

区别:

  • BeanFactory在加载配置文件时不会创建对象,只有在获取(使用)对象时才创建对象
  • ApplicationContext在加载配置文件时就会创建配置文件中相关的对象

IOC操作之Bean管理:
Bean管理指的是两个操作:

  • Spring创建对象
  • Spring注入属性

IOC操作Bean管理(FactoryBean)
Spring中有两种Bean,一种是普通bean;还有一种工厂bean(FactoryBean),工厂bean是spring内置的一种bean的类型

区别:

  • 普通bean:在xml配置文件中定义的bean类型就是返回的类型
  • 工厂bean:在配置文件中定义的bean的类型可以和返回的类型不一致

工厂bean的创建:

  1. 创建一个类,让该类实现一个接口FactoryBean
  2. 实现接口中的方法,可以在getObject()方法中定义返回的bean类型

Bean的作用域

在spring里面,可以设置创建的bean实例是单实例的还是多实例的。默认情况下,创建的bean是单实例对象

如何设置bean实例为多实例对象:
在xml中bean标签里有一个scope属性用于设置bean的作用域

属性值:

  • singleton:默认值,表示为单实例对象
  • prototype 表示多实例对象

singleton与prototype的特点:

  • 当scope属性设置为singleton时,当xml配置文件被加载时,就会创建单实例对象
  • 当scope属性设置为prototype时,只有获取对象时(getBean),才会创建多实例对象

Bean的生命周期

  1. 通过构造方法创建bean实例
  2. 通过bean实例中的set方法进行属性注入
  3. 调用bean实例的初识化方法(需要进行配置初始化方法)
  4. 得到bean实例,bean可以使用了
  5. 当容器关闭时,调用bean的销毁方法(需要进行配置销毁方法)

其实bean有后置处理器,所以加上后置处理器bean的生命周期一共有七步:

  1. 通过构造方法创建bean实例
  2. 通过bean实例中的set方法进行属性注入
  3. 把bean实例传递给bean后置处理器的方法postProcessBeforeInitialization()
  4. 调用bean实例的初识化方法(需要进行配置初始化方法)
  5. 把bean实例传递给bean后置处理器的方法postProcessAfterInitialization()
  6. 得到bean实例,bean可以使用了
  7. 当容器关闭时,调用bean的销毁方法(需要进行配置销毁方法)

后置处理器的创建

  1. 创建一个类,实现接口BeanPostProcessor,重写实现两个方法
  2. 在配置文件中创建后置处理器的实例。

创建完后,该配置文件中所有的bean实例都会在初始化方法调用前后执行后置处理器的对应方法

最后修改:2021 年 06 月 06 日 02 : 29 PM
如果觉得我的文章对你有用,请随意赞赏