Bean的生命周期
一、Bean
我们已经知道容器是什么了,怎么用,那么我们现在来认识bean,在之前的ApplicationContext.xml文件中我们就有看到过beanl。
以上就是我们对Bean的认知:其实可以总结为它就是为容器ApplicationContext.xml外在表现,提供获取到某些对象的一个表情,然后它的写法与里面有哪些属性等。
下面我们来说生命周期:
如果需要完整的SpringBean的生命周期那么它一共有十一个,我们就来说一数简单的生命周期,然后在于复杂的进行对比。
测试test类:
package spring;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args){
/**
* bean的生命周期:
* 实例化 -> 初始化 —> 使用对象 -> 销毁
*/
//1.加载并且解析applicationContext.xml
ClassPathXmlApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.获取工厂中的IUserDao对象了
IUserDao userDao = (IUserDao)factory.getBean("userDao");
//3.调用方法
userDao.selectUser();
//4.销毁对象
factory.close();
}
}
ApplicationContext.xml文档:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!--
bean的属性:
id:引用名称,每个对象的唯一标识,不允许重复
class:包名 + 类名,表示需要new的对象的路径
init-method:指定对象使用过程中的初始化方法
destroy-method:指定对象使用过程中的销毁方法
bean的生命周期:
实例化 -> 初始化 —> 使用对象 -> 销毁
-->
<!--IUserDao userDao = new UserDaoImpl(); -->
<bean id="userDao" class="spring.UserDaoImpl" init-method="myInit" destroy-method="myDestroy"></bean>
</beans>
在它生命周期里,初始化化与销毁是可以自定义的,它没有要求你必须执行,我们可以自定义一个初始化与销毁的类,然后在ApplicationContext.xml里面配置,是否需要执行。较为灵活,侵入性较低。
那么完整的SpringBean生命周期长长什么样?我们找张图,来了解一下:
图片来源于:https://blog.csdn.net/u011436878/article/details/83904681
我们可以看出来,如果你需要实例化是需要实现接口,一个完整的Bean什么周期,它需要实现很多接口,那么它的侵入性就大大的增强了,当然任何的方式都是为了适应你现在的需求,现在去只是认识这个东西,所以没有深入。