bean的生命始末和生命周期

生命始末:

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.xsd">

    <!-- 注册Service -->
    <bean id="myService" class="com.bjpowernode.ba06.SomeServiceImpl"
    		init-method="setUp" destroy-method="tearDown"/>

</beans>

接口:
public interface ISomeService {
	void doSome();
}
实现类:
public class SomeServiceImpl implements ISomeService {
	
	public SomeServiceImpl() {
		System.out.println("执行无参构造器");
	}
	
	@Override
	public void doSome() {
		System.out.println("执行doSome()方法");
	}

	public void setUp() {
		System.out.println("生命起始");
	}
	
	public void tearDown() {
		System.out.println("销毁之前");
	}

}



测试类:
public class MyTest {
	
	@Test
	public void test01() {
		// 创建容器对象,加载Spring配置文件
		String resource = "com/bjpowernode/ba06/applicationContext.xml";
		ApplicationContext ac = new ClassPathXmlApplicationContext(resource);
		ISomeService service = (ISomeService) ac.getBean("myService");
		service.doSome();
		// 对于销毁方法的执行,有两个条件:
		// 1)当前的Bean需要是singleton的
		// 2)要手工关闭容器
		((ClassPathXmlApplicationContext)ac).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.xsd">

    <!-- 注册Service -->
    <bean id="myService" class="com.bjpowernode.ba07.SomeServiceImpl"
    		init-method="setUp" destroy-method="tearDown">
    	<property name="adao" value="aaa"/>
    	<property name="bdao" value="bbb"/>
   	</bean>
   	
   	<bean class="com.bjpowernode.ba07.MyBeanPostProcessor"/>

</beans>



处理类:
public class MyBeanPostProcessor implements BeanPostProcessor {

	// bean:表示当前正在进行初始化的Bean对象
	// beanName:表示当前正在进行初始化的Bean对象的id
	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName)
			throws BeansException {
		System.out.println("Step5:执行 ----before---()方法");
		return bean;
	}

	@Override
	public Object postProcessAfterInitialization(final Object bean, String beanName)
			throws BeansException {
		System.out.println("Step8:执行 ----after---()方法");
		return bean;
	}

}
实现类

public class SomeServiceImpl implements ISomeService, BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean {
	private String adao;
	private String bdao;
	
	public void setAdao(String adao) {
		this.adao = adao;
		System.out.println("Step2:执行setter");
	}

	public void setBdao(String bdao) {
		this.bdao = bdao;
		System.out.println("Step2:执行setter");
	}

	public SomeServiceImpl() {
		System.out.println("Step1:执行无参构造器");
	}
	
	@Override
	public void doSome() {
		System.out.println("Step9:执行doSome()方法");
	}

	public void setUp() {
		System.out.println("Step7:初始化完毕之后");
	}
	
	public void tearDown() {
		System.out.println("Step11:销毁之前");
	}

	@Override
	public void setBeanName(String name) {
		System.out.println("Step3:获取到bean的id = " + name);
	}

	@Override
	public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
		System.out.println("Step4:获取到BeanFactory容器");
	}

	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println("Step6:Bean初始化完毕了");
	}

	@Override
	public void destroy() throws Exception {
		System.out.println("Step10:实现接口的销毁之前");
	}

}
接口:
public interface ISomeService {
	void doSome();
}



测试类:

public class MyTest {
	
	@Test
	public void test01() {
		// 创建容器对象,加载Spring配置文件
		String resource = "com/bjpowernode/ba07/applicationContext.xml";
		ApplicationContext ac = new ClassPathXmlApplicationContext(resource);
		ISomeService service = (ISomeService) ac.getBean("myService");
		service.doSome();
		// 对于销毁方法的执行,有两个条件:
		// 1)当前的Bean需要是singleton的
		// 2)要手工关闭容器
		((ClassPathXmlApplicationContext)ac).close();
	}
	
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值