10、spring注解学习(bean的生命周期)——BeanPostProcessor【接口】:bean的后置处理器
1、创建Bird类并注入容器中
@Component public class Bird { public Bird() { System.out.println("Bird的构造方法执行了"); } //对象构造并属性赋值后执行 @PostConstruct public void PostConstruct() { System.out.println("Bird的PostConstruct方法执行了"); } @PreDestroy public void destroy() { System.out.println("Bird的销毁方法执行了"); } }
2、创建自定义bean的后置处理器并注入容器中
/* * 后置处理器,初始化前后进行处理 */ @Component public class MyBeanPostProcessor implements BeanPostProcessor { /* * 参数1为容器刚创建的bean,beanName为bean的名字 */ //初始化前所需要做的处理 @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessAfterInitialization..."+beanName+"=>"+bean); //返回的对象可以是原来初始化的bean,也可以是包装之后的bean return bean; } //初始化后所需要做的处理 @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("postProcessBeforeInitialization..."+beanName+"=>"+bean); return bean; } }
3、在spring配置类中配置扫描哪些包下的注解并注入容器
/** * 测试bean的生命周期的配置 */ @Configuration @ComponentScan(value="com.atguigu") public class MainConfigOfLifeCycle { }
4、创建测试方法进行测试
/* * 测试自定义bean的后置处理器在bean初始化前后所做工作 */ @Test public void test04() { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class); applicationContext.close(); }
执行结果:
得出结论:
postProcessAfterInitialization方法:初始化前所需要做的处理
postProcessBeforeInitialization方法:初始化后所需要做的处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)