在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
如何管理Spring Bean的生命周期?回答这个问题之前,我们可以先来看看Bean的定义,Bean是一个被实例化,组装,并通过Spring IOC容器所管理的对象。换句话说,那些组成应用程序的主体以及由Spring IOC容器所管理的对象就是bean。另外,在Spring中bean默认都是单例的。想要管理Spring Bean的生命周期,大概要按照以下步骤去做:
步骤1:实例化一个Bean,也就是我们通常说的new;
步骤2:按照Spring上下文对实例化的Bean进行配置,也就是IOC注入;
步骤3:如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,此处传递的是Spring配置文件中Bean的ID;
步骤4:如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(),传递的是Spring工厂本身(可以用这个方法获取到其他Bean);
步骤5:如果这个Bean实现了ApplicationContextAware接口,会调用;setApplicationContext(ApplicationContext)方法,传入Spring上下文,该方式同样可以实现步骤4,但比4更好,以为ApplicationContext是BeanFactory的子接口,有更多的实现方法;
步骤6:如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用After方法,也可用于内存或缓存技术;
步骤7:如果这个Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法;
步骤8. 如果这个Bean关联了BeanPostProcessor接口,将会调用postAfterInitialization方法。需要注意:以上工作完成以后就可以用这个Bean了,那这个Bean是一个single的,所以一般情况下我们调用同一个ID的Bean会是在内容地址相同的实例;
步骤9:当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean接口,会调用其实现的destroy方法;
步骤10:最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。
以上就是管理Spring Bean生命周期的十大步骤解析。相信大家看到这里,对于刚开始的问题已经有自己的答案了。关于Java的更多答疑解惑,敬请关注博学谷Java栏目的资讯更新。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java基础语法之运算符笔记整理
一般来讲,Java程序的基本组成要素有两个,一个是表达式,另一个就是运算符。运算符作为Java基础语法的一个重要知识点,是学习的根基。本文为大家整理了十分全面的运算符学习笔记,学过这部分基础知识的同学,可以复习梳理一遍。没学过的同学可以结合博学谷Java就业班的试学视频一起学习,相信知识点的思路会更加清晰。
3703
2019-12-05 14:58:40
浅谈学习Java需要有哪些基础?
浅谈学习Java需要有哪些基础?对于一个没有接触过编程语言的人来说,一点学习经验都没有,突然想要学习一门Java语言来作为自己的生存技能,就会问学习Java需要具有哪些基础?该如何学习呢?
3508
2020-02-14 17:46:12
Redis选择单线程模型的原因分析
双线程的程序可以支持每秒几百万的请求量,众所周知,Redis 作为被广泛使用的内存数据库偏偏选择了单线程模型,这又是为什么呢?其实简单概括起来主要有以下三个原因,方便维护,可以并发的处理任务以及双线程不能解决Redis的性能瓶颈。下面我们来仔细分析一下Redis选择单线程模型的原因。
3394
2020-03-10 18:41:44
Spring Cloud Alibaba实战项目教程哪有?
Spring Cloud Alibaba实战项目教程哪有?博学谷Spring Cloud Alibaba微服务架构电商项目实战教程详细讲解 Spring Cloud Alibaba 核心技术,包括:Nacos、Sentinel、Dubbo、Seata、RocketMQ以及 Feign、Gateway、OAuth2、Skywalking、Docker 等其他必备主流技术。
5636
2020-06-16 11:29:44
Java初学者须知编码规范
现代软件行业的高速发展对开发者的综合素质要求越来越高, 因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如: 数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险; 工程结构混乱导致后续维护艰难;没有鉴权的漏洞代码易被黑客攻击等。 有些人觉得编码规范不重要,其实是大错特错。下面是关于代码格式的一些编码规范,都是Java初学者非常容易忽视的细节:
3134
2020-08-10 16:09:38