3. Spring配置文件
3.1 Bean标签的基本配置
用于配置对象交由Spring来创建。
默认情况下他调用的是类中的无参构造,如果没有无参构造则不能创建成功。
基本属性:
- id:Bean实例在Spring容器中的唯一标识
- class:Bean的全限定名称
3.2 Bean标签的范围配置
scope:指对象的作用范围,取值如下:
取值范围 | 说明 | 被创建的时机 |
---|---|---|
singleton | 默认的,单例的 | 加载配置文件,创建Spring容器的时创建 |
prototype | 多利的 | 创建对象的时(getBean();) |
request | WEB项目,Spring创建一个Bean对象,将对象存入request域中 | |
session | WEB项目,Spring创建一个Bean对象,将对象存入session域中 | |
global session | WEB项目,应用中Portlet环境 |
1、当scope的取值范围为singleton时
Bean的实例化个数:1个
Bean的实例化实际:当Spring核心文件被加载时,实例化配置的备案实例
Bean的生命周期:
- 对象创建:当应用加载时,对象被创建了
- 对象运行:只要容器在,对象一直活着
- 对象销毁:当应用卸载,销毁容器时对象就被销毁了
2、当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
- 对象创建:当使用对象时,创建新的对象实例
- 对象运行:只要对象在使用中,就一直活着
- 对象销毁:当对象长时间不用时,被Java的垃圾回收器回收
3.3 Bean的生命周期配置
- init-method:指定类中的初始化方法名称(类加载时执行)
- destroy-method:指定类中的销毁方法名称(手动关闭时执行)
3.4 Bean实例化的三种方式
- 无参构造方法的实例化
<bean id="UserDao" class="com.orange.Impl.UserDaoImpl"></bean>
- 工厂静态方法的实例化
<bean id="UserDao" class="com.orange.factory.SasticFactpry" factory-method="getUserDao"></bean>
- 工厂实例方法的实例化
<bean id="Factory" class="com.orange.factory.DynamicFactory" ></bean>
<bean id="UserDao" factory-bean="Factory" factory-method="getUserDao"></bean>
3.5 Bean的依赖注入分析
因为UserService和UserDao都在Spring容器中,二最终程序直接使用的是UserService,所以可以在Spring容器中,将UserDao设置到User Service内部。
3.6 Bean的依赖注入概念
依赖注入:是Spring框架核心IOC的具体实现
在编写程序时,通过控制反转,把对象的创建交给了Spring,但是到马总不可能出现没有依赖的情况。
IOC解耦只是减低他们的依赖关系,但不会消除。例如:业务层人会调用持久层的方法。
那么这种业务层和持久层的依赖关系,在使用Spring之后就让Spring来维护了。
简单来说,就是坐等框架吧持久层对象传入业务层,而不用我们自己去获取。
将UserDao注入到UesrService内部
- 构造方法
- set方法
3.7 Bean的依赖注入的方式
- set方法注入
P命名空間諸如的本質也是set方法注入,但比起上述的set方法注入更方便,主要体现在配置文件中。
首先,需要引入P命名空间:
xmlns:p="http://www.springframework.org/schema/p"
其次,要修改注入方式
<bean id="userService" class="com.orange.service.Impl.UserServiceImpl" p:userDao-ref="userdata"></bean>
- 通过构造方法注入
首先生成有参构造和无参构造
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
public UserServiceImpl(){
}
其次修改配置文件
<bean id="userdata" class="com.orange.Impl.UserDaoImpl" ></bean>
<constructor-arg name="userDao" ref="userdata"></constructor-arg></bean>
3.8 Bean的依赖注入的数据类型
上面的操作,都是注入的引用Bean,除了对象的引用可以注入,普通数据类型,集合都可以在容器中进行注入
注入数据的三种数据类型
- 普通数据类型(value)
- 引用数据类型(ref)
- 集合数据类型(子标签)
3.9 引入其他的配置文件
实际开发中,Spring的配置内容非常的多,这就导致Spring配置很繁杂而且体积很大,所以,可以将部分配置才接到其他的配置文件中,二Spring主配置文件通过import标签进行加载
<import resource="applicationContext-User.xml"></import>