Bean的生命周期
1.使用init-method和destroy-method指定初始化方法和销毁方法
package com.wsz;
import com.wsz.config.MainConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class main {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext(MainConfig.class);
applicationContext.close();
}
}
package com.wsz.pojo;
public class Person {
public Person(){
System.out.println("Person....Construction");
}
public void init(){
System.out.println("init......执行了");
}
public void destroy(){
System.out.println("destroy......执行了");
}
}
2.通过让Bean实现InitializingBean, DisposableBean定义初始化逻辑和销毁逻辑
package com.wsz.pojo;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class Person implements InitializingBean, DisposableBean {
public Person(){
System.out.println("Person....Construction");
}
public void init(){
System.out.println("init......执行了");
}
public void destroy1(){
System.out.println("destroy......执行了");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitializingBean..........执行了");
}
@Override
public void destroy() throws Exception {
System.out.println("DisposableBean......执行了");
}
}
3.使用JSR250
package com.wsz.pojo;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
public class Person implements InitializingBean, DisposableBean {
public Person(){
System.out.println("Person....Construction");
}
public void init(){
System.out.println("init......执行了");
}
public void destroy1(){
System.out.println("destroy......执行了");
}
@PostConstruct
public void init1(){
System.out.println("PostConstruct......执行了");
}
@PreDestroy
public void destroy2(){
System.out.println("PreDestroy......执行了");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitializingBean..........执行了");
}
@Override
public void destroy() throws Exception {
System.out.println("DisposableBean......执行了");
}
}
4.BeanPostProcessor:bean的后置处理器
postProcessBeforeInitialization:初始化之前
postProcessAfterInitialization:初始出之后
package com.wsz.config;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class BeanPostProcessorTest implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessBeforeInitialization........执行了");
return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName);
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessAfterInitialization........执行了");
return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
}
}