Spring学习_2:Spring配置文件详解

目录

Bean标签的基本配置

Spring学习_2:Spring配置文件详解
id:唯一性标识,不允许重复
class:Bean的全限定名称

Bean标签范围配置

scope:指对象的作用范围,取值如下
Spring学习_2:Spring配置文件详解

prototype:每次通过getBean获取对象都是新的对象

当scope为singleton或者默认时,通过getBean得到的两个对象地址是相同的,而为prototype时地址不一样,说明创建了两个不同的对象。
Spring学习_2:Spring配置文件详解

总结

Spring学习_2:Spring配置文件详解

Bean的生命周期配置

  • init-method:指定类中的初始化方法名称
  • destroy-method:指定类中销毁方法名称

在bean标签中通过以上方法绑定相应的方法名,来执行初始化和销毁时的方法(这两个方法在UserDaoImpl中创建)
Spring学习_2:Spring配置文件详解Spring学习_2:Spring配置文件详解

Bean实例化的三种方式

  • 无参构造方法实例化
  • 工厂静态方法实例化
  • 工厂实例方法实例化

工厂静态方法实例化:

在com.itheima下创建一个factory包,里面创建一个含有静态方法getUserDao的StaticFactory类,返回一个UserDaoImpl对象
Spring学习_2:Spring配置文件详解
然后在bean中更改class为StaticFactory的位置,并且添加 factory-method=“getUserDao” 来确定具体的方法。

工厂实例方法实例化:

在com.itheima下创建一个factory包,里面创建一个DynamicFactory类
Spring学习_2:Spring配置文件详解
但因为这的方法不是静态方法,如果需要调用则必须先获取对象
所以不能像工厂静态方法实例化时那样直接更改bean,应该新建一个id为factory的bean,class为DynamicFactory的全限定名,让spring容器通过无参构造创建工厂对象,再通过另一个获取userDao的bean来使用上一个bean中的方法。
Spring学习_2:Spring配置文件详解

上一篇:springboot启动报错Bean with name ‘xxxxService‘ has been injected into other beans


下一篇:Spring系列之基于环境抽象-10