当前位置: 首页 > wzjs >正文

深圳定制建站网站建设企业画册设计印刷制作

深圳定制建站网站建设,企业画册设计印刷制作,asp做微网站设计,网站变appSpring之生命周期Bean的生成过程 前言:一般面试题, 1、说说spring中Bean的生命周期? 2、我们可以在Bean的创建过程中, 3、怎么对Bean进行一些增强… 下面写的常见的Bean的生成过程,可能有误,欢迎大家一起指…

Spring之生命周期Bean的生成过程

前言:一般面试题,
1、说说spring中Bean的生命周期?
2、我们可以在Bean的创建过程中,
3、怎么对Bean进行一些增强…
下面写的常见的Bean的生成过程,可能有误,欢迎大家一起指出

Bean的生命过程讲解

1,生成BeanDefinition

public class Test {public static void main(String[] args) {// 创建一个Spring容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
}

1.1 进到 AnnotationConfigApplicationContext 容器执行方法
org.springframework.context.support.AbstractApplicationContext#refresh

1.2 执行 完成Bean工厂的初始化
org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization

1.3 执行 实例化非懒加载的单例Bean
org.springframework.beans.factory.config.ConfigurableListableBeanFactory#preInstantiateSingletons

获取Bean的定义
在这里插入图片描述
在这里插入图片描述

2,合并BeanDefinition

通过扫描得到BeanDefinition之后,就可以根据BeanDefinition创建Bean对象了,spring中支持BeanDefiniton的父子关系,比如

<bean id="parent" class="com.xx.service.Parent" scope="prototype"/>
<bean id="child" class="com.xxx.service.Child"/>

这么定义则 child 是单例
如果这么定义

<bean id="parent" class="com.xx.service.Parent" scope="prototype"/>
<bean id="child" class="com.xxx.service.Child" parent="parent"/>

则 child为prototype。
因为child的父BeanDefinition是parent,所以会继承父类的 scope属性

在这里插入图片描述

3,类加载器

执行 非抽象,单例 非懒加载 开始创建Bean
org.springframework.beans.factory.support.AbstractBeanFactory#getBean(java.lang.String)

org.springframework.beans.factory.support.AbstractBeanFactory#doGetBean

开始调用
org.springframework.beans.factory.support.AbstractBeanFactory#resolveBeanClass

代码加载类
在这里插入图片描述
如果Bean没有被加载 则执行获取类加载器进行加载

在这里插入图片描述

	@Nullableprivate ClassLoader beanClassLoader = ClassUtils.getDefaultClassLoader();

1,优先选择当前线程的 ClassLoader
2,如果线程类加载器为null的情况下,则返回 ClassUtils.getDefaultClassLoader();的加载器
3,如果ClassUtils类的类加载器为空,则返回系统类的加载器执行的代码如下
ClassLoader.getSystemClassLoader();

4,实例化前

当BeanDefinition对应类加载成功后,就可以实现对象,在这里加个扩展点
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#resolveBeforeInstantiation

// 表示实例化之前做的,如果在这里进行实例化,会直接执后一步
InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()
在这里插入图片描述

5,实例化

这里会根据BeanDefinition去创建一个对象。
在这里插入图片描述

6,BeanDefinition的后置处理器

Bean的对象实例化出来后,后面就是给属性赋值。在这spring提供一个扩展点
在这里插入图片描述

7,实例化后

spring提供一个扩展点实例化之后,属性设置之前 InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
在这里插入图片描述

7,自动注入

**在这里插入图片描述**

8,处理属性

这个步骤,会处理@Autowired、@Resource、@Value等注解
InstantiationAwareBeanPostProcessor.postProcessProperties()
在这里插入图片描述

9,执行Aware

完成了属性赋值之后,spring会执行一些回调包括如下
在这里插入图片描述

10,初始化前

BeanPostProcessor.postProcessBeforeInitialization()
常见的做拦截器用,token,权限…
实现类如下
在这里插入图片描述

11,初始化

判断是否实现InitializingBean 接口
在这里插入图片描述

12,初始化后

spring的扩展点
BeanPostProcessor.postProcessAfterInitialization()
【spring的Aop就是基于初始化之后实现的】

13,Bean的销毁

bean的销毁是在发送到spring容器关闭过程中的。

spring容器关闭时,比如

		AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);// 关闭容器applicationContext.close();

执行这个方法,销毁bean
org.springframework .beans.factory.support.AbstractBeanFactory#registerDisposableBeanIfNecessary
,
在这里插入图片描述
1,是否实现DisposableBean或者 AutoCloseable接口
2,BeanDefinition中是否指定了destroyMethod
3,调用DestructionAwareBeanPostProcessor.requiresDestruction(bean)进行判断
在这里插入图片描述


文章转载自:

http://oBtS4qAO.djpps.cn
http://32gb921I.djpps.cn
http://yAA2YnAL.djpps.cn
http://HRJqdNrv.djpps.cn
http://wV9eCLRQ.djpps.cn
http://cKR27xzk.djpps.cn
http://EcngPT25.djpps.cn
http://TVMbUN48.djpps.cn
http://vZvGxvlJ.djpps.cn
http://C9eEJI20.djpps.cn
http://DRXLFF5h.djpps.cn
http://YuucAwXm.djpps.cn
http://3XBrTyV6.djpps.cn
http://oKcXVAeQ.djpps.cn
http://B7F7zRfj.djpps.cn
http://Z1ekSo02.djpps.cn
http://KUFBxi2X.djpps.cn
http://GAvpRLqW.djpps.cn
http://XF3HKmz0.djpps.cn
http://5IcLZuB9.djpps.cn
http://esKgirdd.djpps.cn
http://5mJVdNzm.djpps.cn
http://OM58Iu3N.djpps.cn
http://DHp1ngPQ.djpps.cn
http://id6DVqpL.djpps.cn
http://JGXkjejr.djpps.cn
http://ME5l3qCW.djpps.cn
http://AOeHoLWD.djpps.cn
http://5ESHa6Ud.djpps.cn
http://kiiDu28A.djpps.cn
http://www.dtcms.com/wzjs/637051.html

相关文章:

  • php网站本地搭建国外网页模板
  • 武进网站建设市场苏州做网站优化的公司
  • 创建软件网站确保网站建设又在前列
  • 网站打开慢什么原因中国免费网站服务器2020
  • 汕头网站建设建设工程管理有限公司
  • 母婴行业网站建设如何在linux服务器上架设网站
  • 济宁网站建设方面淮上网站建设
  • 建设局网站更改法人所需材料用dw怎么做网站首页
  • 东莞樟木头做网站哪家好wordpress 微信 插件
  • 网站做快照北票市建设工程安全管理站网站
  • 邯郸网站建设公司哪家好北京市建设局网站
  • 网站的关于页面wordpress精致博客主题
  • 什么网站可以免费做视频的软件具有口碑的柳州网站建设价格
  • 杨凌区住房和城乡建设局网站南京做网站的客户电话
  • a做爰网站自己建的网站有乱码
  • 菲律宾做网站好吗免费创建个人网站
  • 潍坊公司网站模板建站网络营销论文5000字
  • 婴儿用品网站模板微信官方商城小程序
  • 孝感网站建设效果南阳做网站seo的
  • 网站建设调查通知wordpress 众筹
  • 陶然亭网站建设旅游网站建设需求说明书
  • 景点网站开发积极意义怎样建设自己网站
  • 网站设计概述500字建设社区网站有什么借鉴之处
  • led动态视频网站建设两个域名同时指向一个网站
  • 为什么网站显示正在建设哪个网站做五金冲压的
  • 建立网站的主要流程有哪些步骤asp.net 4.0网站开发 下载
  • 经典网页传奇西安网站关键词优化费用
  • 建设教育网站怎么样千库网会员
  • 万站霸屏vs网站制作
  • 长春 网站 设计wordpress最近浏览