广告
返回顶部
首页 > 资讯 > 精选 >Spring bean生命周期知识点讲解
  • 124
分享到

Spring bean生命周期知识点讲解

spring 2023-05-30 18:05:41 124人浏览 八月长安
摘要

这篇文章主要讲解了“spring bean生命周期知识点讲解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring bean生命周期知识点讲解”吧!前言任何一个事物都有自己的生命周期,生

这篇文章主要讲解了“spring bean生命周期知识点讲解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring bean生命周期知识点讲解”吧!

前言

任何一个事物都有自己的生命周期,生命的开始、生命中、生命结束。大家最熟悉的应该是servlet 的生命周期吧。和 servlet 一样 spring bean 也有自己的生命周期。

开发中生命周期是一个很常见的名词,基本每种编程语言都能找到与它关联的。关于bean的生命周期我在网上也找了好多,基本都差不多。这里我主要是想通过代码来验证,毕竟学的知识都是一样的,都是学的Java,最重要的是动手练习,这样印象更深。

下面是它生命周期的描述,我们通过demo来进行验证。

下图是它执行的顺序。

Spring bean生命周期知识点讲解

Spring bean生命周期知识点讲解

一、创建LiftCycle类实现BeanFactoryAware,BeanNameAware,InitializingBean,DisposableBean,ApplicationContextAware5个接口方法

package Cuiyw.Spring.Service;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.BeanFactoryAware;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 LifeCycle implements BeanFactoryAware,BeanNameAware,InitializingBean,DisposableBean,ApplicationContextAware{  private String name; public String getName() { System.out.println("getName name="+name); return name; } public void setName(String name) {  System.out.println("setName name="+name); this.name = name; } public void afterPropertiesSet() throws Exception { // TODO Auto-generated method stub  System.out.println("InitializingBean.afterPropertiesSet()"); } public void setBeanName(String arg0) { // TODO Auto-generated method stub System.out.println("BeanNameAware.setBeanName"); } public void setBeanFactory(BeanFactory arg0) throws BeansException { // TODO Auto-generated method stub System.out.println("BeanFactoryAware.setBeanFactory"); } public void destroy() throws Exception { // TODO Auto-generated method stub System.out.println("DisposableBean.destroy"); } public void myInit() { System.out.println("【init-method】调用<bean>的init-method属性指定的初始化方法"); } public void myDestory() { System.out.println("【destroy-method】调用<bean>的destroy-method属性指定的初始化方法"); } public void setApplicationContext(ApplicationContext arg0) throws BeansException { // TODO Auto-generated method stub  System.out.println("ApplicationContextAware.setApplicationContext"); } }

二、注册InstantiationAwareBeanPostProcessor接口

package Cuiyw.Spring.Service;import java.beans.PropertyDescriptor;import org.springframework.beans.BeansException;import org.springframework.beans.PropertyValues;import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;public class MyInstantiationAwareBeanPostProcessor implements InstantiationAwareBeanPostProcessor{ public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("InstantiationAwareBeanPostProcessor.postProcessAfterInitialization"); return bean; } public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("InstantiationAwareBeanPostProcessor.postProcessBeforeInitialization"); return bean; } public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation"); return true; } public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation"); return null; } public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean,  String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("InstantiationAwareBeanPostProcessor.postProcessPropertyValues"); return pvs; }}

三、注册BeanPostProcessor接口

其实InstantiationAwareBeanPostProcessor继承BeanPostProcessor,所以在上面我也实现了BeanPostProcessor接口的方法

package Cuiyw.Spring.Service;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;public class MyBeanPostProcessor implements BeanPostProcessor { public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("BeanPostProcessor.postProcessAfterInitialization "); return bean; } public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("BeanPostProcessor.postProcessBeforeInitialization"); return bean; }}

四、注册BeanFactoryPostProcessor接口

package Cuiyw.Spring.Service;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanFactoryPostProcessor;import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor { public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0) throws BeansException { // TODO Auto-generated method stub System.out.println("BeanFactoryPostProcessor.postProcessBeanFactory"); }}

五、在上下文中配置

这里还是在上一个博客demo的基础上进行修改,为了有其他干扰,我先把service去掉了。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="Http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="beanPostProcessor" class="Cuiyw.Spring.Service.MyBeanPostProcessor"></bean><bean id="instantiationAwareBeanPostProcessor" class="Cuiyw.Spring.Service.MyInstantiationAwareBeanPostProcessor"></bean><bean id="beanFactoryPostProcessor" class="Cuiyw.Spring.Service.MyBeanFactoryPostProcessor"></bean><bean id="lifeCycle" class="Cuiyw.Spring.Service.LifeCycle" init-method="myInit" destroy-method="myDestory"><property name="name" value="cuiyw1"></property></bean></beans>

六、在main中使用bean

package Cuiyw.Springaop;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import Cuiyw.Spring.IService.IService;import Cuiyw.Spring.Service.LifeCycle;public class App { public static void main( String[] args ) { ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml"}); BeanFactory factory=context; LifeCycle lifeCycle=factory.getBean("lifeCycle",LifeCycle.class); lifeCycle.setName("cuiyw2");  System.out.println("lifeCycle.name="+lifeCycle.getName()); ((ClassPathXmlApplicationContext)factory).reGISterShutdownHook();   }}

七、输入打印结果

可以发现输出的顺序和上面图的顺序基本一致。

Spring bean生命周期知识点讲解

感谢各位的阅读,以上就是“Spring bean生命周期知识点讲解”的内容了,经过本文的学习后,相信大家对Spring bean生命周期知识点讲解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Spring bean生命周期知识点讲解

本文链接: https://www.lsjlt.com/news/220257.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring bean生命周期知识点讲解
    这篇文章主要讲解了“Spring bean生命周期知识点讲解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring bean生命周期知识点讲解”吧!前言任何一个事物都有自己的生命周期,生...
    99+
    2023-05-30
    spring
  • 【Spring】Spring的Bean的生命周期
    作者简介:大家好,我是五度鱼,一个普通的Java领域博主,不停输出Java技术博客和干货。座右铭:锲而不舍,金石可镂。个人主页:五度鱼学Java的主页 文章目录 前言1. 什么是Bean的生命周期?2. 为什么要知道Bean...
    99+
    2023-08-17
    java Bean生命周期 spring
  • 怎样理解Spring Bean生命周期
    怎样理解Spring Bean生命周期,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近把整个流程...
    99+
    2023-06-16
  • Spring 中 Bean 的生命周期详解
    目录前言1.Bean 生命周期2.代码演示总结前言 Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Sp...
    99+
    2022-11-13
  • spring之Bean的生命周期详解
    Bean的生命周期:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁Bean的定义Bean 是 spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就可以在任何其他的 Bean 中使用,一个 Be...
    99+
    2023-05-31
    spring bean 生命周期
  • 深入了解Spring的Bean生命周期
    目录源码下载什么是 Spring Bean 的生命周期Bean的生命周期Spring角度查看bean的定义与注册SpringBoot角度查看bean定义和注册实例化,依赖注入,初始化...
    99+
    2022-11-12
  • Spring Bean的生命周期 -- Spring入门(三)
    文章目录 前言1. 理解bean的生命周期2. Bean 生命周期的执行过程3. Bean生命周期控制入门案例4. 关闭IOC容器的两种方式5. 通过继承接口绑定生命周期方法 总结 前言 为了巩固所学的知识,作者尝试着开始...
    99+
    2023-08-17
    spring java 后端
  • Spring源码解析之Bean的生命周期
    一、Bean的实例化概述 前一篇分析了BeanDefinition的封装过程,最终将beanName与BeanDefinition以一对一映射关系放到beanDefinitionMa...
    99+
    2022-11-12
  • Spring Bean生命周期源码分析
    这篇“Spring Bean生命周期源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-07-05
  • Spring Bean的生命周期是什么
    这篇“Spring Bean的生命周期是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-07-05
  • Spring bean的生命周期是什么
    Spring bean的生命周期包括以下阶段:1. 实例化(Instantiation):在容器启动时,Spring根据配置信息或注...
    99+
    2023-08-24
    Spring bean
  • Spring Bean生命周期,好像人的一生。。
    大家好,我是老三,上节我们手撸了一个简单的IOC容器五分钟,手撸一个Spring容器!,这节我们来看一看Spring中Bean的生命周期,我发现,和人的一生真的很像。 简单说说IoC和Bean IoC...
    99+
    2023-09-27
    spring java 后端
  • 怎么深入了解Spring的Bean生命周期
    本篇文章为大家展示了怎么深入了解Spring的Bean生命周期,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是 Spring Bean 的生命周期对于普通的 Java 对象,当 new 的时候创...
    99+
    2023-06-26
  • Java深入讲解Bean作用域与生命周期
    目录1. Bean 的作用域1.1 观看案例1.2 作用域的定义1.3 Bean 的 6 种作用域1.4 如何设置 Bean 的作用域① @Scope(ConfigurableBea...
    99+
    2022-11-13
  • Spring中bean的生命周期有多长
    这篇文章主要介绍“Spring中bean的生命周期有多长”,在日常操作中,相信很多人在Spring中bean的生命周期有多长问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring中bean的生命周期有多长...
    99+
    2023-06-02
  • spring中bean的生命周期是什么
    在Spring中,Bean的生命周期包括以下几个阶段:1. 实例化:当Spring容器接收到请求时,根据配置文件或注解等方式,在内存...
    99+
    2023-09-27
    spring bean
  • Spring创建Bean的生命周期详析
    目录1.Bean 的创建生命周期2.Spring AOP 大致流程3.Spring 事务4.Spring 源码阅读前戏BeanDefinitionBeanDefinitionRead...
    99+
    2022-11-13
  • 详解Spring中Bean的作用域与生命周期
    目录一、Bean的作用域二、Bean的生命周期使用代码演示Bean的生命周期一、Bean的作用域 通过Spring容器创建一个Bean的实例时,不仅可以完成Bean的实例化,还可以使...
    99+
    2022-11-12
  • 如何理解Spring框架中Bean的生命周期
    如何理解Spring框架中Bean的生命周期,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.Bean的生命周期关于Bean的...
    99+
    2022-10-19
  • Spring中Bean的作用域与生命周期详解
    目录一、Bean的作用域1、单实例Bean声明2、多实例Bean声明二、Bean的生命周期1、bean的初始和销毁2、bean的后置处理器总结一、Bean的作用域 首先我们来讲一下有...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作