bean的生命周期: bean创建---初始化----销毁的过程,容器管理bean的生命周期。
初始化: 对象创建完成,并赋值好,调用初始化方法。
销毁:单实例:容器关闭的时候调用销毁方法
多实例:容器不会管理这个bean,容器不会调用销毁方法。
实现初始化和销毁方法,一般采用下面两种方式:
1)、指定初始化和销毁方法; 通过@Bean指定init-method和destroy-method;
2)、通过让Bean实现InitializingBean(定义初始化逻辑),DisposableBean(定义销毁逻辑);
示例代码:
public class Campaign { public void init(){ System.out.println("Campaign 对象初始化"); } public void detory(){ System.out.println("Campaign 对象销毁"); } }
public class Coupon implements InitializingBean,DisposableBean { @Override public void destroy() throws Exception { System.out.println("Coupon销毁"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("afterPropertiesSet"); } }
配置类
@Configuration public class LifeCycleConfig { /** * initMethod指定初始化方法 campaign里init() * destroyMethod指定销毁方法 campaign里detory() * @return */ @Bean(initMethod="init",destroyMethod="detory") public Campaign campaign(){ return new Campaign(); } @Bean public Coupon coupon(){ return new Coupon(); } }
测试运行
@Test public void test(){ AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(LifeCycleConfig.class); System.out.println("ioc容器创建完成...."); Object campaign = applicationContext.getBean("campaign"); Object coupon = applicationContext.getBean("coupon"); applicationContext.close();//关闭容器 }
从运行结果可以看到容器调用了相应的初始化和销毁方法。