Bean 的生命周期

java
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
/**
* bean 的生命周期
*
* @author 朔风
* @date 2026-01-13 14:12
*/
@Component
public class HelloSpringBean implements InitializingBean, BeanPostProcessor {
private static final Logger logger = LoggerFactory.getLogger(HelloSpringBean.class);
/***
* 在依赖注入完成之后就会执行
*
* @author 朔风
* @date 2026/1/13 14:13
* @return void
*/
@PostConstruct
public void init() {
logger.info("HelloSpringBean init ...");
}
/***
* 在 BeanFactory 完成属性设置之后执行的, 实现 InitializingBean 接口
*
* @author 朔风
* @date 2026/1/13 14:20
* @return void
*/
@Override
public void afterPropertiesSet() throws Exception {
logger.info("HelloSpringBean afterPropertiesSet ...");
}
/***
* bean 初始化前置方法
*
* @author 朔风
* @date 2026/1/13 14:19
* @param bean bean
* @param beanName beanName
* @return java.lang.Object
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof IUserInfoService) {
logger.info("HelloSpringBean postProcessBeforeInitialization ....");
}
return bean;
}
/***
* bean 初始化后置方法
*
* @author 朔风
* @date 2026/1/13 14:19
* @param bean bean
* @param beanName beanName
* @return java.lang.Object
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof IUserInfoService) {
logger.info("HelloSpringBean postProcessAfterInitialization ....");
}
return bean;
}
/***
* 销毁 bean 的时候回调
*
* @author 朔风
* @date 2026/1/13 14:19
* @return void
*/
@PreDestroy
public void destroy() {
logger.info("HelloSpringBean destroy....");
}
}
剑鸣秋朔