Spring(二、配置文件)
![Spring(二、配置文件)](https://static001.geekbang.org/infoq/60/60134398b9ea3f246880dbbbe15aa6db.png)
Spring 配置文件
Spring 配置文件是用于指导 Spring 工厂进行 Bean 生产、依赖关系注入(装配)及 Bean 实例分发的"图纸"。Java EE 程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring 配置文件是一个或多个标准的 XML 文档,applicationContext.xml 是 Spring 的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。
![](https://static001.geekbang.org/infoq/60/60134398b9ea3f246880dbbbe15aa6db.png)
1.Bean 标签基本配置
用于配置对象交由 Spring 来创建。
默认情况下它调用的是类中的无参构造函数。
如果没有无参构造函数则不能创建成功。
基本属性:
id:Bean 实例在 Spring 容器中的唯一标识 (不能重复)
class:Bean 的全限定名称
2.Bean 标签范围配置
scope:指对象的作用范围,取值如下:
1)当 scope 的取值为 singleton 时
Bean 的实例化个数:1 个
Bean 的实例化时机:当 Spring 核心文件被加载时,实例化配置的 Bean 实例
Bean 的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
测试
applicationContext.xml (scope="singleton")
测试,打印实例化的对象发现一样
测试结果:
![](https://static001.geekbang.org/infoq/f3/f3ce2334b27568964ae7171299721e4d.png)
2)当 scope 的取值为 prototype 时
Bean 的实例化个数:多个
Bean 的实例化时机:当调用 getBean()方法时实例化 Bean
Bean 的生命周期:
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了
测试
当测试 scope 的作用域改为 prototype 时:
![](https://static001.geekbang.org/infoq/37/373cbfe0b6905ca38d26de1163c91203.png)
3.Bean 生命周期配置
3.1 init-method:
指定类中的初始化方法名称
3.2 destroy-method:
指定类中销毁方法名称
(1)关于 Spring 中对 bean 生命周期控制提供了两种方式:
在配置文件中的 bean 标签中添加
init-method
和destroy-method
属性类实现
InitializingBean
与DisposableBean
接口,这种方式了解下即可。
![](https://static001.geekbang.org/infoq/d9/d9894037c8554b8e3678eada8c0e591f.png)
(2)对于 bean 的生命周期控制在 bean 的整个生命周期中所处的位置如下:
初始化容器
1.创建对象(内存分配)
2.执行构造方法
3.执行属性注入(set 操作)
==4.执行 bean 初始化方法==
使用 bean
1.执行业务操作
关闭/销毁容器
==1.执行 bean 销毁方法==
(3)关闭容器的两种方式:
ConfigurableApplicationContext 是 ApplicationContext 的子类
close()方法
registerShutdownHook()方法
4.Bean 实例化三种方式
无参构造方法实例化 (常用)
工厂静态方法实例化
工厂实例方法实例化 FactoryBean(实用)
版权声明: 本文为 InfoQ 作者【斯】的原创文章。
原文链接:【http://xie.infoq.cn/article/608925f55accfe28da369c3af】。文章转载请联系作者。
评论