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

开发网站需求设计it外包公司简介

开发网站需求设计,it外包公司简介,口碑很好的金句,免费门户网站搭建目录 SpringBean的生命周期 整体介绍 详细介绍 1.实例化Bean 2.设置属性值 3.检查Aware 4.调用BeanPostProcessor的前置处理方法 5.调用InitializingBean的afterPropertiesSet方法 6.调用自定义init-method方法 7.调用BeanPostProcessor的后置处理方法 8.注册Destru… 目录 SpringBean的生命周期 整体介绍 详细介绍 1.实例化Bean 2.设置属性值 3.检查Aware 4.调用BeanPostProcessor的前置处理方法 5.调用InitializingBean的afterPropertiesSet方法 6.调用自定义init-method方法 7.调用BeanPostProcessor的后置处理方法 8.注册Destruction回调 9.Bean准备就绪 10.调用DisposableBean的destroy方法 11.调用自定义的destory-method 核心部分源码 SpringBean的生命周期 整体介绍 一个SpringBean从出生到销毁的全过程就是它的整个生命周期需要经历以下几个阶段 整个生命周期可以大致分为三个大阶段分别是创建、使用、销毁。还可以进一步分为5个小的阶段实例化、初始化前置处理、初始化、后置处理、注册Destruction回调、正常使用、销毁。 详细介绍 SpringBean的生命周期详情 1.实例化Bean Spring容器首先创建Bean实例 在AbstractAutowireCapableBeanFactory类中的createBeanInstance方法中实现 2.设置属性值 Spring容器注入必要的属性到Bean中。 在AbstractAutowireCapableBeanFactory类中的populateBean方法中处理 3.检查Aware 如果Bean实现了BeanNameAware、BeanClassLoaderAware等这些Aware接口Spring容器会调用它们。 在AbstractAutowireCapableBeanFactory类中的initializeBean方法中调用 4.调用BeanPostProcessor的前置处理方法 在Bean初始化之前允许自定义的BeanPostProcessor对Bean实例进行处理如修改Bea的状态 BeanPostProcessor的postProcessBeforeInitialization方法会在此时被调用。 由AbstractAutowireCapableBeanFactory的applyBeanPostProcessorsBeforeInitialization方法执行 5.调用InitializingBean的afterPropertiesSet方法 提供一个机会在所有Bean属性设置完成后进行初始化操作。如果Bean实现了InitializingBean接口afterPropertiesSet方法会被调用。 在AbstractAutowireCapableBeanFactory的invokelnitMethods方法中调用 6.调用自定义init-method方法 提供一种配置方式在XML配置中指定Bean的初始化方法。如果Bean在配置文件中定义了初始化方法那么该方法会被调用。 在AbstractAutowireCapableBeanFactory的invokelnitMethods方法中调用 7.调用BeanPostProcessor的后置处理方法 在Bean初始化之后再次允许BeanPostProcessor对Bean进行处理。BeanPostProcessor的postProcessAfterlnitialization方法会在此时被调用。 由AbstractAutowireCapableBeanFactory的applyBeanPostProcessorsAfterlnitialization方法执行 8.注册Destruction回调 如果Bean实现了DisposableBean接口或在Bean定义中指定了自定义的销毁方法Spring容器会为这些Bean注册一个销毁回调确保在容器关闭时能够正确地清理资源。 在AbstractAutowireCapableBeanFactory类中的registerDisposableBeanlfNecessary方法中实现 9.Bean准备就绪 此时Bean已完全初始化可以开始处理应用程序的请求了 10.调用DisposableBean的destroy方法 当容器关闭时如果Bean实现了DisposableBean接口destroy方法会被调用。 在DisposableBeanAdapter的destroy方法中实现 11.调用自定义的destory-method 如果Bean在配置文件中定义了销毁方法那么该方法会被调用 在DisposableBeanAdapter的destroy方法中实现 核心部分源码 可以看到整Bean的创建的过程都依赖于AbstractAutowireCapableBeanFactory这个类而销毁主要依赖DisposableBeanAdapter这个类 AbstractAutowireCapableBeanFactory 的入口处doCreateBean的核心代码如下其中包含了实例化、设置属性值、初始化Bean以及注册销毁回调的几个核心方法。 protected Object doCreateBean(String beanName, RootBeanDefinition mbd, Nullable Object[] args)throws BeanCreationException {//实例化 Bean。BeanWrapper instanceWrapper null;if (mbd.isSingleton()) {instanceWrapper this.factoryBeanInstanceCache.remove(beanName);}if (instanceWrapper null) {instanceWrapper createBeanInstance(beanName, mbd, args);}Object bean instanceWrapper.getWrappedInstance();Class? beanType instanceWrapper.getWrappedClass();if (beanType ! NullBean.class) {mbd.resolvedTargetType beanType;}//..............................................//初始化 Bean 实例。Object exposedObject bean;try {//设置属性值populateBean(beanName, mbd, instanceWrapper);//初始化BeanexposedObject initializeBean(beanName, exposedObject, mbd);}//......................................//注册Bean的销毁回调。try {registerDisposableBeanIfNecessary(beanName, bean, mbd);}catch (BeanDefinitionValidationException ex) {throw new BeanCreationException(mbd.getResourceDescription(), beanName, Invalid destruction signature, ex);}return exposedObject;} 而DisposableBeanAdapter的destory方法的核心内容如下 Overridepublic void destroy() {//...........................if (this.invokeDisposableBean) {//........................try {((DisposableBean) this.bean).destroy();}//.............................//判断是否自定义了销毁方法else if (this.destroyMethods ! null) {//遍历每个销毁方法并调用for (Method destroyMethod : this.destroyMethods) {invokeCustomDestroyMethod(destroyMethod);}}else if (this.destroyMethodNames ! null) {//遍历每个销毁方法名称并通过方法名称调用for (String destroyMethodName : this.destroyMethodNames) {Method destroyMethod determineDestroyMethod(destroyMethodName);if (destroyMethod ! null) {invokeCustomDestroyMethod(ClassUtils.getInterfaceMethodIfPossible(destroyMethod, this.bean.getClass()));}}}}
http://www.pierceye.com/news/810406/

相关文章:

  • 福州商城网站建设网站建设的域名和空间价位
  • 如何做外卖网站网页设计照片
  • 长沙河西做网站自己做的网站怎么设置文件下载
  • 计算机本科论文 网站建设wordpress如何添加关键词和描述
  • div嵌套影响网站收录唐山做网站多少钱
  • 做网站挂谷歌广告赚钱吗windows优化大师自动安装
  • 网站下一步工作怎么做网上最好购物网站
  • OA 公司网站 铁道建设报自驾游网站建设
  • wordpress建站网站根目录短视频怎么赚钱
  • 亳州网站开发公司wordpress 添加分享
  • 如何查询网站接入信息移动网站开发框架
  • 河南做网站的百度竞价推广收费标准
  • 深圳的深圳的网站建设公司校园网站建设方向
  • 电商网站建设 解决方案的设计营销策略都有哪些方面
  • 菏泽网站建设兼职凡科网制作网站教程
  • 实验一 电子商务网站建设与维护北京网站设计培训学校
  • 周到的网站建设合肥建筑网站大全
  • 国外互联网资讯网站南宁网站制作费用
  • 建设公司网站要注意哪些蜜雪冰城推广软文
  • 做信息安全的网站博客网站的建设
  • 门户网站建设项目书提升学历是什么意思
  • 上海网站建设极简慕枫塘沽有哪些互联网公司
  • 社区网站如何做官方网站建设哪儿有
  • 做兼职的网站策划书大连中山网站建设
  • 中国摄影网站深圳网站建设龙华
  • 个人网站怎么建立深圳网站建站费用
  • 笔趣阁建站教程网页设计 网站建设啥意思
  • 海门网站开发西安响应式网站建设服务提供商
  • 自适应网站建站哈尔滨市建设安全监察网站
  • nas服务器可以做网站吗电商类网站开发方案