结论先行
bean实现InitializingBean和DisposableBean接口,并实现相应的方法,可以定义初始化和销毁方法
bean定义
package com.ouyangxizhu.bean;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
@Component
public class Cat implements InitializingBean, DisposableBean {
public Cat() {
System.out.println("cat..............constructor");
}
@Override
public void destroy() throws Exception {
System.out.println("cat..............destroy");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("cat...............init");
}
}
配置类
package com.ouyangxizhu.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.ouyangxizhu.bean")
public class MainConfigInitializingBeanDisposableBean {
}
启动类
package com.ouyangxizhu;
import com.ouyangxizhu.config.MainConfigImport;
import com.ouyangxizhu.config.MainConfigInitializingBeanDisposableBean;
import com.ouyangxizhu.utils.PrintBeanDefinitionNamesUtils;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainTestInitializingBeanDisposableBean {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigInitializingBeanDisposableBean.class);
context.close();
}
}
结果
八月 04, 2020 10:22:46 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@31cefde0: startup date [Tue Aug 04 22:22:46 CST 2020]; root of context hierarchy
cat..............constructor
cat...............init
八月 04, 2020 10:22:46 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@31cefde0: startup date [Tue Aug 04 22:22:46 CST 2020]; root of context hierarchy
cat..............destroy