Spring - Bean管理之生命周期
发布日期:2021-06-30 23:46:57
浏览次数:2
分类:技术文章
本文共 2755 字,大约阅读时间需要 9 分钟。
Ps:因为如果是多例模式的话,它不知道结束的时候该去销毁哪个,所以不会去调用destroy方法。
package com.imooc.ioc.demo3;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanNameAware;import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;public class Man implements BeanNameAware,ApplicationContextAware,InitializingBean,DisposableBean{ private String name; public void setName(String name) { System.out.println("第二步:设置属性"); this.name = name; } public Man(){ System.out.println("第一步:初始化..."); } public void setup(){ System.out.println("第七步:MAN被初始化了..."); } public void teardown(){ System.out.println("第十一步:MAN被销毁了..."); } @Override public void setBeanName(String name) { System.out.println("第三步:设置Bean的名称"+name); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("第四步:了解工厂信息"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("第六步:属性设置后"); } public void run(){ System.out.println("第九步:执行业务方法"); } @Override public void destroy() throws Exception { System.out.println("第十步:执行Spring的销毁方法"); }}
package com.imooc.ioc.demo3;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("第五步:初始化前方法..."); return bean; } @Override public Object postProcessAfterInitialization(final Object bean, String beanName) throws BeansException { System.out.println("第八步:初始化后方法..."); return bean; }}
package com.imooc.ioc.demo3;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Bean的作用范围的测试 */public class SpringDemo3 { @Test public void demo2(){ ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Man man = (Man)applicationContext.getBean("man"); man.run(); applicationContext.close(); }}
运行结果:第一步:初始化...第二步:设置属性第三步:设置Bean的名称man第四步:了解工厂信息第五步:初始化前方法...第六步:属性设置后第七步:MAN被初始化了...第八步:初始化后方法...第九步:执行业务方法第十步:执行Spring的销毁方法第十一步:MAN被销毁了...
转载地址:https://lux-sun.blog.csdn.net/article/details/84108957 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月16日 12时48分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
新冠疫情影响了经济,却带动了区块链
2021-07-04
我们提出了DeFi项目如何成为聚合器,有两种路径
2021-07-04
SnapEx的新感觉,对新手很友好
2021-07-04
区块链有哪些潜在风险?
2021-07-04
聚合器运用在什么地方最合适
2021-07-04
区块链可以解决供应链的问题,包括食品方面
2021-07-04
首个聚合器怎么产生的,并运用领域在什么
2021-07-04
区块链资金安全吗?该怎么保护
2021-07-04
区块链的优势和劣势的对比
2021-07-04
新技术,区块链能用在什么领域
2021-07-04
区块链技术应用,最先医疗行业
2021-07-04
新币上市旧币会降价吗
2021-07-04
为什么币圈的基础设施越来越多
2021-07-04
区块链投资要注意这几点
2021-07-04
市场套利策略是什么
2021-07-04
跨市场套利怎么处理
2021-07-04
当博士进入币圈会怎么样
2021-07-04
以太坊技术分解
2021-07-04
以太坊技术怎么提供安全性
2021-07-04
如何验证以太坊技术安全性
2019-05-01