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

机械企业网站建设wordpress xrea

机械企业网站建设,wordpress xrea,目前做哪个网站致富,wordpress 点击展开Spring容器的启动过程 Spring 在初始化过程中有二个非常重要的步骤,容器的初始化与刷新。 初始化流程 如果想生成 bean 对象,那么就需要一个 beanFactory 工厂(DefaultListableBeanFactory)如果想让加了特定注解(如 …

Spring容器的启动过程

Spring 在初始化过程中有二个非常重要的步骤,容器的初始化与刷新。

初始化流程

在这里插入图片描述

  • 如果想生成 bean 对象,那么就需要一个 beanFactory 工厂(DefaultListableBeanFactory)
  • 如果想让加了特定注解(如 @Service、@Repository)的类,进行读取,转化成 BeanDefinition 对象(BeanDefinition存储了 bean 对象的所有特征信息,如是否单例,是否懒加载,factoryBeanName 等),那么就需要一个注解配置读取器(AnnotatedBeanDefinitionReader)
  • 如果想对用户指定的包目录进行扫描查找 bean 对象,就需要一个路径扫描器(ClassPathBeanDefinitionScanner)

在加载配置文件时,Spring会创建一个BeanFactory工厂,然后使用配置信息填充该工厂的BeanDefinition,根据这些信息创建相关的Bean实例。在创建Bean实例时,Spring采用了延迟初始化的策略,即只有当需要使用Bean实例时才会进行初始化。

注册BeanDefinition的流程主要包括解析配置文件、扫描注解、解析Java Config等。在解析配置文件时,Spring会根据配置文件的语法规则进行解析,并将解析结果封装成BeanDefinition对象。在扫描注解时,Spring会扫描指定包下的类,并将带有指定注解的类封装成BeanDefinition对象。在解析Java Config时,Spring会根据Java Config配置文件的语法规则进行解析,并将解析结果封装成BeanDefinition对象。

ClassPathBeanDefinitionScanner是Spring框架的一个工具类,它可以在指定的包路径下搜索bean。它会扫描所有符合条件的类,并将其注册为bean,以便在后续的操作中使用。使用这个工具类,会先创建一个BeanDefinitionRegistry对象,然后创建一个ClassPathBeanDefinitionScanner对象,并设置它的扫描路径和过滤器。最后,调用scan方法开始扫描,扫描完成后,ClassPathBeanDefinitionScanner会自动将扫描到的类注册到BeanDefinitionRegistry中。完成注册后,你就可以使用Spring的BeanFactory来获取指定的bean了。

刷新流程

在这里插入图片描述
refresh()主要用于容器的刷新,Spring中的每一个容器都会调用refresh()方法进行刷新。refresh()方法主要完成以下几个步骤:

(1)进行容器的准备工作,如初始化环境变量、注册系统事件监听器等。

(2)创建或获取BeanFactory实例。如果创建时传入了BeanFactory实例,则使用该实例;否则,根据配置文件创建一个新的BeanFactory实例。

(3)对BeanFactory进行一些必要的设置,如设置ClassLoader、设置BeanPostProcessor等。

(4)对BeanFactory进行后置处理,可用于扩展BeanFactory的功能。

(5)执行BeanFactoryPostProcessor接口的实现类,对BeanFactory进行后置处理。

(6)注册所有的BeanPostProcessor实现类。

(7)初始化MessageSource,用于国际化处理。

(8)初始化事件广播器,用于事件的发送和接收。

(9)通知所有已注册的监听器容器已经初始化完成。

(10)关闭容器时进行资源的释放。

(11)注册事件监听器。

(12)完成BeanFactory的初始化工作,包括创建实例、注入依赖、执行初始化方法等。

(13)完成容器的初始化,释放资源等。

//refresh()的简略源码:
public void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// 1. 刷新前的预处理prepareRefresh();// 2. 获取 beanFactory,即前面创建的【DefaultListableBeanFactory】ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();// 3. 预处理 beanFactory,向容器中添加一些组件prepareBeanFactory(beanFactory);try {// 4. 子类通过重写这个方法可以在 BeanFactory 创建并与准备完成以后做进一步的设置postProcessBeanFactory(beanFactory);// 5. 执行 BeanFactoryPostProcessor 方法,beanFactory 后置处理器invokeBeanFactoryPostProcessors(beanFactory);// 6. 注册 BeanPostProcessors,bean 后置处理器registerBeanPostProcessors(beanFactory);// 7. 初始化 MessageSource 组件(做国际化功能;消息绑定,消息解析)initMessageSource();// 8. 初始化事件派发器,在注册监听器时会用到initApplicationEventMulticaster();// 9. 留给子容器(子类),子类重写这个方法,在容器刷新的时候可以自定义逻辑,web 场景下会使用onRefresh();// 10. 注册监听器,派发之前步骤产生的一些事件(可能没有)registerListeners();// 11. 初始化所有的非单实例 beanfinishBeanFactoryInitialization(beanFactory);// 12. 发布容器刷新完成事件finishRefresh();}catch(){...}finally{...}}
}
http://www.yayakq.cn/news/614738/

相关文章:

  • 邯郸兄弟建站swiper做的网站
  • 有哪些网站是做采购招标的网站外链有死链
  • 杭州网站设计的公司辽宁省开原市城乡建设投资有限公司网站
  • 如何做响应式布局网站汕头网站建设系统
  • 传奇世界新开服网站建设投资基金管理有限公司网站
  • 晋江市住房建设局网站天津百度推广优化排名
  • 厦门做网站 厦门专业做网站的公司 我想做网站网站开发年收入
  • 网站建设价格标准渠道阿里手机网站开发框架
  • 网站开发语言识别南宁网站建公司
  • 做网站用什么软件初二网站快速注册
  • 怎么建一个网站卖东西seo包年推广
  • 当当网电子商务网站建设特点宁波市高等级公路建设指挥部网站
  • 购物商城html网站代码网站建设中什么是一栏
  • 平顶山市网站建设公司如何对网站进行管理
  • cpa怎么做网站做网站的每天打电话咋办
  • 西部数码网站管理助手 卸载网站建设成交话术
  • 南宁网站建站公司打电话叫人做网站
  • 移动通网站建设gateface做网站
  • 英德市建设及城乡管理局网站vi设计经典案例
  • 做一个英文网站域名解析二级域名
  • 网站设计评价指标海南公共招聘网
  • 网站申请空间杭州物流公司
  • 东莞南城外贸网站建设自己做网站都需要什么
  • 电商网站建设培训班济南电商网站建设
  • 手机网站开发设计做pc端网站特色
  • 淮安哪个做网站好点北京网站设计公司有哪些
  • 长治一般做一个网站需要多少钱自贡建设监督质量网站
  • 网站备案链接直接查看wordpress定时发布插件
  • 网站怎么做必须交钱吗网站开发用什么图片格式最好
  • 花都区水务建设管理中心官方网站百度推广合作