分为定义,初始化,使用,消亡
写个例子测试一下:
第一步:建一个类User,代码如下:
第二步:将User注入.applicationContext.xml配置如下:
第三步:建一个类TestMain测试一下:
java 代码
- package test.lyx;
- publicclass User {
- private String userName;
- public String getUserName() {
- returnuserName;
- }
- publicvoid setUserName(String userName) {
- this.userName = userName;
- }
- }
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean id="user" class="test.lyx.User" abstract="false"
- singleton="true" lazy-init="default" autowire="byType"
- dependency-check="default">
- <property name="userName">
- <value>liuyuanxi</value>
- </property>
- </bean>
- </beans>
java 代码
- package test.lyx;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.FileSystemXmlApplicationContext;
- publicclass TestMain {
- publicstaticvoid main(String[] args) {
- ApplicationContext context=new FileSystemXmlApplicationContext("test/lyx/applicationContext.xml");
- User user1=(User)context.getBean("user");
- System.out.println(user1.getUserName());
- }
- }
这样运行该类会打出liuyuanxi.那么这几步就是bean的定义和使用.
接下来我们在User类中加上两个方法:init clear,当然方法明任你起.
java 代码
- publicvoid init(){
- this.userName="zhangsan";
- }
- publicvoid clear(){
- this.userName=null;
- }
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean id="user" class="test.lyx.User" abstract="false"
- singleton="true" lazy-init="default" autowire="byType"
- dependency-check="default" init-method="init" destroy-method="clear">
- <property name="userName">
- <value>liuyuanxi</value>
- </property>
- </bean>
- </beans>
这里面的红线部分就是修改的内容.如果init-method属性设置了方法,那么就会在bean初始化的时候被执行.而destroy-method在消毁之前执行.
第二种方法:(实现初始化,和消毁的两个接口)
可以不在配置文件中指定init-method,destroy-method两个方法.
我们把User类修改一下:代码如下:
java 代码
- package test.lyx;
- import org.springframework.beans.factory.InitializingBean;
- import org.springframework.beans.factory.DisposableBean;
- publicclass User implements InitializingBean,DisposableBean{
- private String userName;
- public String getUserName() {
- returnuserName;
- }
- publicvoid setUserName(String userName) {
- this.userName = userName;
- }
- publicvoid init(){
- this.userName="zhangsan";
- }
- publicvoid clear(){
- this.userName=null;
- }
- publicvoid afterPropertiesSet() throws Exception {
- this.userName="wangwu";// TODO Auto-generated method stub
- }
- publicvoid destroy() throws Exception {
- this.userName=null;// TODO Auto-generated method stub
- }
- }
修改过后的类,就是在原来的基础上,实现两个接口InitializingBean,DisposableBean也就是初始化和消毁的接口,这里我们要把InitializingBean接口里的afterPropertiesSet方法给覆盖掉,也就是将初始化的东西写在这个方法以里面.同时也要把DisposableBean接口的destroy方法覆盖掉,
消毁的东西写在这个方法里.这样的话,就无需在配置文件中配置init-method和destroy-method两个方法.
整个的过程就是bean的生命周期.
浙公网安备 33010602011771号