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

网站建设数据库代码三亚河北建设招聘信息网站

网站建设数据库代码,三亚河北建设招聘信息网站,搜狐网站建设,网站设计的提案承接上文Spring Bean生命周期应用程序在运行过程中能否去读取当前系统的环境变量或系统属性?这里涉及到一个非常重要的接口Environment#xff0c;System.getenv#xff0c;System.getProperties都是获取当前系统环境变量#xff0c;Environment接口的实现类AbstractEnviro…承接上文Spring Bean生命周期应用程序在运行过程中能否去读取当前系统的环境变量或系统属性?这里涉及到一个非常重要的接口EnvironmentSystem.getenvSystem.getProperties都是获取当前系统环境变量Environment接口的实现类AbstractEnvironmentAbstractEnvironment的实现类StandardEnvironment在当前容器运行之前或运行前置的某些方法里面的时候就会调用这些方法将环境变量或系统属性放到environment里面去方便应用程序后续进行调用比如springmvc init-param指定的初始化方法读取环境变量之后放到environment中去这就是environment对象存在的意义。AbstractApplicationContext这个类refresh方法中包含13个方法refresh是Spring框架最核心的方法之一执行下面的代码debug来看下创建对象的过程super调用父类的构造方法相当于做了一些属性值的设置设置xml配置文件路径方便后面进行读取和加载。refresh方法调用prepareRefresh是刷新前的准备工作设置关闭和活跃的标志位。细节的东西不想看没关系但要知道这个是前期做一些准备工作方便后面创建对象。配置文件经过读取之后要放到容器里面去所以第一步先应该有对应的容器工厂或者有bean工厂当有了BeanFactory之后才能进行相关的加载工作所以第一步应该先创建一个容器当把容器创建好了之后下一步才读取配置文件。obtainFreshBeanFactory.refreshBeanFactory这个方法里面先判断容器里面有没有bean工厂如果有的话销毁掉如果没有的话先创建一个bean工厂因为需要先有bean工厂之后才能完成当前对象的加载工作。有了bean工厂之后设置下序列化的id和自定义配置下工厂的属性值这样就完成了整个工厂的创建工作。当完成创建工作之后第二步loadBeanDefinitions是加载配置文件因为这个配置文件中有1个bean所以当执行完这样的加载工作之后beanDefinitionMap和beanDefinitionNames里面有一个bean目前已经把bean对象转换成了bean definition了下一步该调用beanFactoryPostProcessor进行增强处理prepareBeanFactory给beanfactory做准备工作因为刚刚new了一个对象还没有给beanFactory做任何属性赋值操作这个方法就是给beanFactory做一些初始化工作即给当前的beanFactory设置某些具体的属性值。这是一个模版方法留给子类进行扩展的。接下来执行beanFactoryPostProcessor当这个步骤执行完了之后下一步该实例化了在进行实例化的时候相对而言会比较复杂实例化的时候包含非常多的步骤。在实例化之前需要做什么准备工作?要提前把后面需要用到的beanPostProcessor准备好如果想在整个bean的spring生命周期里面在不同的阶段做不同的处理工作监听器 、监听事件、多播器等这些东西都要提前准备好只有把这些准备好之后才能进行后续的调用工作这是一整个流程不可能用的时候再准备。这一步是注册beanPostProcessor这是还没有执行只是先提前准备好。如果是SpringMVC项目messagesource就是用来做国际化的操作的。初始化当前应用程序的事件多播器注册监听器。在实例化之前所有需要做的准备工作都做完了这几个方法都是预先的准备工作。接下来该实例化了实例化所有剩下的非懒加载的单例对象finishBeanFactoryInitialization.preInstantiateSingletons该方法是实例化剩下的单例对象终于要开始实例化了。当前容器里面有一个bean目标是把这个bean放到一个集合里面去。首先看容器里面有没有这个beangetBean(beanName).doGetBean默认情况下都是单例的通过反射的方式创建具体的bean对象获取到对应的构造器对象获取实例化的策略并且进行实例化获取到构造器并实例化实例化的时候只是在堆中开辟内存空间并没有给属性赋值接下来是填充属性在执行populateBean方法之前当前bean对象这3个值都等于空执行完之后name完成了属性填充但beanName不会填充因为beanName是aware接口现在还没有执行Aware接口的实现类接下来执行这些实现了aware接口的方法此时beanName就有了为什么environment没有设置因为在prepareBeanFactory方法中对这个Aware接口进行了忽略本身的invokeAwareMethods方法也没有对EnvironmentAware进行处理调用每个postProcessBeforeInitialization方法执行到这里此时就已经是一个完整的对象了即执行完getBean(beanName)得到了一个完整的对象了。因为当前集合里面只有一个对象所以此时循环就结束了当前这个bean完成了实例化且初始化。
http://www.hkea.cn/news/14413718/

相关文章:

  • 东莞网站建设哪个平台好成功的网络营销案例
  • 什么网站可以做外链阿玛尼高仿手表网站
  • 天津自贸区建设局网站怎样进入医院公众号
  • 电子电路自学网站html好看的首页
  • 合肥公司建设网站首页大同建设局网站
  • 高端定制网站开发建站教程详解石家庄网站运营
  • 潮流资讯类网站建设策划wordpress外观自定义
  • 网站建设过程中的系统结构图淄博网站建设-中国互联
  • 常德网站建设全域云wordpress主页广告
  • 网站挂标 怎么做网站开发打不开子网页
  • 做电影网站如何规避版权做一份网站动态图多少钱
  • 南山最专业的网站建设多网站管理
  • 搞一个网站多少钱电脑网页游戏大全
  • 比较有名的设计网站帝国软件怎么做网站
  • 企业网站优化的原则沈阳关键词推广
  • 怎么向google提交网站做响应式网站最大宽度
  • 网站建设新的技术方案建网站要注意的细节
  • 广州外贸网站建设公司深圳网站建设加q479185700
  • 建设网站文件夹的名字建设部设计院网站
  • 江西省注册和城乡建设厅网站外包公司名单
  • 聊城做网站推广公司桂建云平台注册
  • 个人做网站要注意什么凡客网站做SEO能被收录吗
  • 企业网站开发成都新浪sae wordpress
  • 某企业网站建设论文谷歌seo一个月费用需要2万吗
  • 做三角渐变用哪个网站中山发布微信公众号
  • 做医药中间体的外贸网站智慧团建app官网下载
  • 静态网站开发的目的WordPress用户页面
  • 哪里的佛山网站建设免费创建个人网站申请
  • 创建网站流程图深圳楼市最新消息
  • 上海遨游网站建设做网站服务器软件