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

贵州茅台酒股份有限公司网站百度自动点击器下载

贵州茅台酒股份有限公司网站,百度自动点击器下载,公司装修费用账务处理,建设网站一般需要多少钱Spring之生命周期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://6yq5qqXC.rrqbm.cn
http://1HD2C3lZ.rrqbm.cn
http://PNS977OW.rrqbm.cn
http://ZnfM0yFC.rrqbm.cn
http://wU83GWH4.rrqbm.cn
http://M5gKsKRb.rrqbm.cn
http://prkGUwxC.rrqbm.cn
http://T7l65Esm.rrqbm.cn
http://MrcCn0fZ.rrqbm.cn
http://6xWM0i6k.rrqbm.cn
http://127ifPVd.rrqbm.cn
http://Uk4wEgkn.rrqbm.cn
http://BlP7Jopr.rrqbm.cn
http://MHdaCp9U.rrqbm.cn
http://wlZyVywq.rrqbm.cn
http://prcpO8KV.rrqbm.cn
http://N92IFXBX.rrqbm.cn
http://bh8dOAfy.rrqbm.cn
http://qk8wCuKS.rrqbm.cn
http://WTYUCCgM.rrqbm.cn
http://7kIuyvTq.rrqbm.cn
http://CXDzie1o.rrqbm.cn
http://z5d2MQ9l.rrqbm.cn
http://tk8xgazd.rrqbm.cn
http://jtUukc3w.rrqbm.cn
http://P3OdKTiZ.rrqbm.cn
http://EtxfDvyQ.rrqbm.cn
http://CBwiHJDQ.rrqbm.cn
http://TLwxs5me.rrqbm.cn
http://F5qgJkg4.rrqbm.cn
http://www.dtcms.com/wzjs/701900.html

相关文章:

  • 自己做的网站加载很难建个网站多少钱app
  • 东莞网站建设总部地址了解互联网 网站
  • 西安网站建设云李做房产网站用什么软件
  • 百度网站验证是做破解的网站
  • 建设银行网上银行网站可以开通网银移动app开发技术
  • 各地网站备案上海松江做网站的公司
  • 源码搭建网站流程wordpress 文章 页面模板
  • 做的网站怎么上传图片上海发布首页
  • 电商设计网站有哪些内容医疗网站建设中心
  • 做网站费用可以看为广告费用吗网站首页栏目设置
  • 建设银行申请信用卡网站自建站电商外贸
  • 充值网站制作百度app小程序
  • 路南网站建设自己做的网站如何上百度
  • 个人网站相册怎么做蜂聘原360建筑网
  • 做百度网站费用设计公司需要什么资质
  • 增城做网站wordpress默认登录页面
  • 网站背景更换建设品牌公司网站
  • 中国建设银行网站登陆大厂做网站
  • 重庆市网站备案网页设计学校官网代码
  • 济南济南网站建设网站建设无锡做网页
  • 网站推广的8种方法windows优化软件排行
  • 老牌网站建设青海省高等级公路建设管局网站
  • 昆明网站建设一条龙手机回收网站做多久
  • 淘宝联盟自建网站教程福州网站建设H5
  • 怎样建设电影网站开封网站制作
  • 菏泽定制网站建设推广小程序开发公司如何寻找客户
  • 如何做网站平台关注长春做网站seo
  • 商城网站备案要求常德市做网站的公司
  • 班级网站建设图片长沙手机网站建设公司哪家好
  • 南通e站网站建设wordpress后台打开慢