spring5_IOC容器(XMl管理方式)

spring5_01的IOC简介(XMl管理方式)

1.将 bean的创建和管理交给spring进行管理
2.最终目的:其实还是为了降低代码的耦合度

底层的实现:XML+工厂模式+反射

底层的实现原理图解

spring中提供的两种实现IOC容器的两种方式:(两个接口)

beanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不建议开发人员进行使用
#@@@@@注:在加载配置文件的时候,不进行创建对象,获取时,创建对象

ApplacationContext:是BeanFactory子接口,提供更多更强大的功能,一般由开发人员进行使用 #@@@@@注:加载配置文件的时候,就已经将配置对象创建

三种属性方式注入方式:

  1. 通过set注入属性
    在这里插入图片描述

  2. 通过有参构造器注入属性
    在这里插入图片描述

  3. p名称空间注入
    (1)使用 p 名称空间注入,可以简化基于 xml 配置方式
    第一步 添加 p 名称空间在配置文件中
    在这里插入图片描述

    第二步 进行属性注入,在 bean 标签里面进行操作(其实也是通过set方式进行注入的)

<bean id="book" class="com.atguigu.spring5.Book" p:bname="九阳神功" 
p:bauthor="无名氏"></bean>

特殊字符转义需要用 <![CDATA[ 值(可用包含特殊字符 )]]>

注:如果需要将字面量设置为null的话,可用null标签或不进行设置

注入属性 外部bean:

在这里插入图片描述

注入属性 内部bean:

在这里插入图片描述

级联赋值 :

方式一:
在这里插入图片描述

方式二:
在这里插入图片描述
注:方式二因为要得到对象才能设置属性,所以所在类中必须要有get方法;

对数组、集合、等注入属性:
数组: 使用array标签
List集合: 使用list标签
Map集合:使用map标签,里面使用entry标签
Set集合:使用set标签

将集合注入部分抽取出来:
(1)在 spring 配置文件中引入名称空间 util
在这里插入图片描述

(2)抽取出来内容
在这里插入图片描述

工厂bean和 普通bean对象:

普通bean: class类 是什么类型就返回什么类型
工厂bean**:** bean对象需要实现FactoryBean接口,重写方法,会自动调用getObject返回类型, 可用通过给FactoryBean<>加泛型的方式,使得返回的类型不用一致;

Bean的作用域:

(1)在spring里面,默认情况下,bean是单实例对象
(2)如何设置Bean是单实例对象还是多实例对象?
2.1:可以用Scope属性设置
2.2:Scope属性(常用):
Singleton(默认):单实例对象
Prototype:多实例对象
(3)singleton和prototype的区别:
**Singleton是单实例对象,**且为加载配置文件时创建对象;
**Prototype 是多实例对象,**当调用getBean()方法时才创建对象;

**

Bean的生命周期:

**
1、生命周期
(1)从对象创建到对象销毁的过程
2、bean 生命周期
(1)通过构造器创建 bean 实例(无参数构造)
(2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)调用 bean 的初始化的方法(需要进行配置初始化的方法)
(4)bean 可以使用了(对象获取到了)
(5)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
在这里插入图片描述

3、加上后置处理器之后的

注:处理器的创建bean 的后置处理器,bean 生命周期有七步
创建类,实现接口 BeanPostProcessor,创建后置处理器
(1)通过构造器创建 bean 实例(无参数构造)
(2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)把 bean 实例传递 bean 后置处理器的方法 postProcessBeforeInitialization
(4)调用 bean 的初始化的方法(需要进行配置初始化的方法)
(5)把 bean 实例传递 bean 后置处理器的方法 postProcessAfterInitialization
(6)bean 可以使用了(对象获取到了)
(7)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/First_____/article/details/113903598