Spring配置文件
Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。
1.Bean标签基本配置
-
用于配置对象交由Spring 来创建。
-
如果没有无参构造函数则不能创建成功。
-
基本属性:
<!-- 创建applicationContext.xml --> <bean id="userDao" class="com.xmp.dao.impl.UserDaoImpl"> </bean>
2.Bean标签范围配置
scope:指对象的作用范围,取值如下:
取值范围 | 说明 |
---|---|
singleton | 默认值,单例的 (默认) |
prototype | 多例的 |
request | WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中 |
session | WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中 |
global session | WEB 项目中,应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当 于 session |
-
Bean的实例化个数:1个
-
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
-
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
- 测试
applicationContext.xml (scope="singleton")
<!-- 创建applicationContext.xml -->
<bean id="userDao" class="com.xmp.dao.impl.UserDaoImpl" scope="singleton"> <!-- singleton单例 默认-->
</bean>
测试,打印实例化的对象发现一样
@Test
//测试scope的作用域
public void test() {
ApplicationContext context = new ClasspathXmlApplicationContext("applicationContext.xml");
UserDao userDao1 = (UserDao) context.getBean("userDao");
UserDao userDao2 = (UserDao) context.getBean("userDao");
System.out.println(userDao1);
System.out.println(userDao2);
}
测试结果:
2)当scope的取值为prototype时
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了
- 测试
当测试scope的作用域改为prototype时:
3.Bean生命周期配置
3.1 init-method:
//初始化方法,在实例化对象的时候调用
public void init() {
System.out.println("UserDaoImpl init ......");
}
3.2 destroy-method:
//销毁方法,在销毁对象的时候调用
public void destroy() {
System.out.println("UserDaoImpl destroy ......");
}
(1)关于Spring中对bean生命周期控制提供了两种方式:
-
类实现
InitializingBean
与disposableBean
接口,这种方式了解下即可。<!-- 创建applicationContext.xml --> <bean id="userDao" class="com.xmp.dao.impl.UserDaoImpl" scope="prototype" init-method="init" (告诉Spring执行该方法) destroy-method="destroy" (告诉Spring执行该方法) > </bean>
(2)对于bean的生命周期控制在bean的整个生命周期中所处的位置如下:
(3)关闭容器的两种方式:
4.Bean实例化三种方式
-
无参构造方法实例化 (常用)
-
工厂静态方法实例化
<!--静态工厂--> <bean id="userDaoFactory" class="com.xmp.Factory.StaticFactory" factory-method="getUserDao"> </bean>
-
工厂实例方法实例化 factorybean(实用)
<!--实例工厂--> <bean id="Factory" class="com.xmp.Factory.DynamicFactory"></bean> <bean id="userDaoFactoryDynamic" factory-bean="Factory" factory-method="getUserDao"></bean>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。