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

东营远见网站建设公司电子商务网站建设培训课件

东营远见网站建设公司,电子商务网站建设培训课件,网站怎样做网银支付,建网站必需服务器吗目录 Bean的实例化 BeanFactoryPostProcessor 属性赋值 循环依赖 初始化 处理各种Aware接口 执行BeanPostProcessor前置处理 执行InitializingBean初始化方法或执行init-method自定义初始化方法 执行BeanPostProcessor后置处理 销毁 Spring Bean 的生命周期总体分为…目录 Bean的实例化 BeanFactoryPostProcessor 属性赋值 循环依赖 初始化  处理各种Aware接口 执行BeanPostProcessor前置处理 执行InitializingBean初始化方法或执行init-method自定义初始化方法  执行BeanPostProcessor后置处理  销毁 Spring Bean 的生命周期总体分为四个阶段 实例化        属性赋值        初始化        销毁 Bean的实例化 Spring容器在进行初始化时会将xml或者配置类中配置的相关的类通过Java Proxy(反射)的方式创建出一个BeanDefinition对象然后将所有的BeanDefinition对象存在一个beanDefinitionMap的集合中去xml中配置的bean的id或者注解配置的value属性作为存入Map的key整个BeanDefinition对象作为value保存。 BeanFactoryPostProcessor BeanFactoryPostProcessor是一个接口规范实现了该接口的类只要交由Spring容器管理的话那么 Spring就会回调该接口的方法用于对BeanDefinition注册和修改的功能。如果实现了这个接口并在其中完成了一些BeanDefinition的注册或修改那么在Bean真正实例化之前会先回调这个接口的方法执行其中的逻辑如果没有实现该接口那么完成真正的实例化。 属性赋值 BeanDefinition 中有对当前Bean实体的注入信息通过属性propertyValues进行了存储Spring在进行属性注入时会分为如下几种情况 注入普通属性String、int或存储基本类型的集合时直接通过set方法的反射设置进去注入单向对象引用属性时从容器中getBean获取后通过set方法反射设置进去如果容器中没 有则先创建被注入对象Bean实例完成整个生命周期后在进行注入操作注入双向对象引用属性时就比较复杂了涉及了循环引用循环依赖 循环依赖 多个实体之间相互依赖并形成闭环的情况就叫做循环依赖也叫做“循环引用”当一个Bean对象中如果引用了另一个Bean对象时会暂停自己的初始化先将引用的那个Bean对象先创建出来然后再继续自己的初始化过程但在这个过程中可能会出现引用的那个Bean对象中也引用了引用它的Bean对象这个时候就会产生循环依赖的情况。 为了解决循环依赖Spring提供了三级缓存存储完整的Bean实例和半成品的Bean实例 最终存储单例Bean成品的容器即实例化和初始化都完成的Bean称之为一级缓存 Map singletonObjects new ConcurrentHashMap(256);早期Bean单例池缓存半成品对象且当前对象已经被其他对象引用了称之为二级缓存 Map earlySingletonObjects new ConcurrentHashMap(16);单例Bean的工厂池缓存半成品对象对象未被引用使用时在通过工厂创建Bean称之为三 级缓存 Map singletonFactories new HashMap(16); 有了三级缓存的后在属性赋值阶段会如果某个Bean中引用其他Bean那么会依次从“三级缓存”往“一级缓存”中找避免了循环依赖的问题。 初始化  经过Bean的实例化和属性赋值后的Bean其实还并不是一个完整的Bean实例对象而是一个“半成品”在完成它的初始化后才会成为一个完整的Bean实例对象并存放进到一个名为singletonObjects的Map中最后当执行applicationContext.getBean(beanName)时从singletonObjects去匹配Bean实例返回。 初始化的过程有以下几个关键点 处理各种Aware接口 Aware接口是一种框架辅助属性注入的一种思想为Bean生命周期各个阶段提供扩展。 如果Bean实现BeanNameAware接口会调用它实现的setBeanName(String beanId)方法注入Bean的名字如果Bean实现BeanClassLoaderAware接口调用setBeanClassLoader()方法注入ClassLoader对象的实例如果Bean实现BeanFactoryAware接口会调用它实现的setBeanFactory()方法注入的是Spring工厂如果Bean实现ApplicationContextAware接口会调用setApplicationContext()方法注入Spring上下文 执行BeanPostProcessor前置处理 Bean被实例化后到最终缓存到名为singletonObjects单例池之前中间会经过Bean的初始化过程 例如属性的填充、初始方法init的执行等其中有一个对外进行扩展的点BeanPostProcessor我们称为Bean后 处理。跟Bean工厂后处理器相似它也是一个接口实现了该接口并被容器管理的BeanPostProcessor 会在流程节点上被Spring自动调用。 执行InitializingBean初始化方法或执行init-method自定义初始化方法  如果Bean实现了InitializingBean接口执行afeterPropertiesSet()方法。如果Bean在Spring配置文件中配置了 init-method 属性则会自动调用其配置的初始化方法。  执行BeanPostProcessor后置处理  如果这个Bean实现了BeanPostProcessor接口将会调用postProcessAfterInitialization(Object obj, String s)方法由于这个方法是在Bean初始化结束后调用 在结束以上初始化的所有过程之后就创建出了一个完整的Bean实例对象我们就可以通过applicationContext.getBean(beanName)使用真正的Bean对象了。 销毁 销毁一个Bean对象有两种方式 执行DisposableBean销毁Bean 当Bean不再需要时会经过清理阶段如果Bean实现了DisposableBean这个接口会调用其实现的destroy()方法执行销毁执行destroy-method自定义销毁方法 如果这个Bean的Spring配置中配置了destroy-method属性会自动调用其配置的自定义销毁方法。
http://www.w-s-a.com/news/745013/

相关文章:

  • 三台建设局网站网页设计购物网站建设
  • thinkphp大型网站开发市场调研公司招聘
  • 天宁区建设局网站七冶建设集团网站 江苏
  • 越南网站 后缀湘潭新思维网站
  • 环球旅行社网站建设规划书网钛cms做的网站
  • 软件资源网站wordpress不能识别语言
  • 东坑仿做网站西安私人网站
  • 公司想做个网站怎么办如何搭建视频网站
  • .net网站架设凯里网站建设哪家好
  • seo网站建站建站国外百元服务器
  • 家具网站开发设计论文企业网站里面的qq咨询怎么做
  • 网站视频提取软件app淘宝店购买网站
  • 站长之家域名解析做百度推广网站咱们做
  • 行业 网站 方案莱州网站建设公司电话
  • 丹东谁做微网站威海网络科技有限公司
  • 寻找网站建设_网站外包自助打印微信小程序免费制作平台
  • 台式机网站建设vk社交网站做婚介
  • 创建网站得花多少钱网站建设的技术路线
  • 图书馆网站建设汇报免费编程软件哪个好用
  • 手机搭建网站工具网站搜索引擎优化的基本内容
  • 网站快速排名二手交易网站开发技术路线
  • 官方网站开发公司施工企业会计王玉红课后答案
  • 网站建设能用手机制作吗网站建设所需物资
  • 阜阳做网站的公司阳江招聘网最新消息
  • 织梦可以做哪些类型型网站wordpress 融资
  • 建设银行手机银行官方网站下载安装腾讯企点账户中心
  • 品牌设计网站有哪些商务网站建设平台
  • 新增网站备案时间什么是软件外包产业
  • 张家界做网站买了网站模版怎么做
  • 六安品牌网站建设怎么样知名商城网站建设报价