生命周期
-定义
-初始化
-使用
-销毁
初始化
-实现org.Springframework.beans.factory.InitializingBean接口,覆盖 afterPropertiesSet方法
-配置init-method
销毁
-实现org.Springframework.beans.factory.DisposableBean接口,覆盖destory方法
-配置destroy-method
配置全局默认初始化、销毁方法
如果自己配置了init ,destory method 则default init ,destroy方法将会被覆盖
Aware
- Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应资源
- 通过Aware接口,可以对Spring相应资源进行操作(一定要慎重)
- 为对Spring进行简单的扩展提供了方便的入口
例子
ApplicationContextAWare类
package com.txr.bean;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContextAware;
public class ApplicationContext implements ApplicationContextAware{
@Override
public void setApplicationContext(org.springframework.context.ApplicationContext arg0) throws BeansException {
System.out.println(arg0.getBean("applicationContext"));
}
}
测试:
static
{
context=new ClassPathXmlApplicationContext("com/txr/resource/spring-ioc.xml");
}
public static void main(String[] args) {
testApplication();
}
public static void testApplication()
{
System.out.println("ApplicationContext : "+context.getBean("applicationContext"));
}
测试结果:
com.txr.bean.ApplicationContext@9736e99
ApplicationContext : com.txr.bean.ApplicationContext@9736e99
BeanName测试
package com.txr.bean;
import org.springframework.beans.factory.BeanNameAware;
public class BeanName implements BeanNameAware{
@Override
public void setBeanName(String name) {
System.out.println("BeanName :"+name);
}
}
测试:
public static ApplicationContext context=null;
static
{
context=new ClassPathXmlApplicationContext("com/txr/resource/spring-ioc.xml");
}
public static void main(String[] args) {
testBeanName();
}
public static void testBeanName()
{
System.out.println("BeanName1 :"+context.getBean("beanName"));
}