根据web.xml的配置

调用FilterDispatcher.init(FilterConfig filterConfig)

1. 创建org.apache.struts2.Dispatcher,并调用init()方法

1.1. 创建com.opensymphony.xwork2.config.ConfigurationManager,其中属性List<ContainerProvider> containerProviders存放所有配置。

1.2. init_DefaultProperties();

初始化DefaultPropertiesProvider,其中方法register(ContainerBuilder builder, LocatableProperties props)实现会从org/apache/struts2/default.properties加载settings到props中,最后将其加入containerProviders.

1.3. init_TraditionalXmlConfigurations();

默认根据struts-default.xml,struts-plugin.xml,struts.xml (可根据init-param:config 修改加载路径) 分别创建三个 org.apache.struts2.config. StrutsXmlConfigurationProvider,其中方法register实现默认会从相应配置文件读取props加载到setting中,会将bean放入ContainerBuilder中,最后将三个containerProviders并加入containerProviders

1.4. init_LegacyStrutsProperties();

初始化LegacyPropertiesConfigurationProvider,并加入containerProviders

1.5. init_CustomConfigurationProviders();

根据init-param:configProviders初始化实现了ContentProvider接口的类,并加入containerProviders.

1.6. init_FilterInitParameters() ;

初始化一个ConfigurationProvider,将定义的initParams从web.xml中读入,放入props

1.7. init_AliasStandardObjects() ;

初始化BeanSelectionProvider

1.8. Container container = init_PreloadConfiguration()

1.8.1. 在初始化时会去执行configuration.reloadContainer(getContainerProviders());

类:com.opensymphony.xwork2.config.impl.DefaultConfiguration

方法:reloadContainer(List<ContainerProvider> providers)

初始化ContainerProperties props,ContainerBuilder builder

遍历containerProviders,调用其register(builder, props)方法

再将props注入builder中。

转载于:https://www.cnblogs.com/jinspire/archive/2011/09/20/2182240.html

Struts2初始化过程代码分析相关推荐

  1. struts2请求过程源代码分析

    struts2请求过程源代码分析 Struts2是Struts社区和WebWork社区的共同成果.我们甚至能够说,Struts2是WebWork的升级版.他採用的正是WebWork的核心,所以.Str ...

  2. 模块加载过程代码分析1

    一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...

  3. WFD连接过程代码分析(Sink端)

    WFD连接过程代码分析(Sink端) WFD建立连接首先必需建立P2P连接,随后WFD使用P2P连接的IP和端口号建立RTSP连接.本文着重分析P2P连接建立后的RTSP连接建立过程,且为一个Sour ...

  4. 【FFmpeg编程进阶】(15)FLV 编码器Codec初始化 ff_mpv_encode_init() 代码分析 -- 待更新

    [FFmpeg编程进阶](15)FLV 编码器Codec初始化 ff_mpv_encode_init 代码分析 一.ff_mpv_encode_init() 在前面分析<[FFmpeg编程进阶] ...

  5. 07.显示系统:第005课_Vsync机制:第004节_surface使用vsync过程代码分析

    前面的小节中,我们讲解了Vsync机制机制的框架,无论SurfaceFlinger还是APP应用程序,对Vsync的使用,都是按需进行的: 比如应用程序把新界面发送给SurfaceFlinger之后, ...

  6. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  7. U-boot之flash初始化完全代码分析

    一 代码分析   1.Board->dave->flash.c #include <common.h> #include <asm/hardware.h> #inc ...

  8. struts2请求处理过程源代码分析(1)

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://www.see-source.com/ 源码解析网 网上对于struts2请求处理流程的讲解还是比较多的 ...

  9. 运行初始化过程代码笔记

    package java_learn;import static out.Print.*; //学习多态,覆盖,动态静态绑定,向上向下转型class M{M(){println("A&quo ...

最新文章

  1. PL/SQL高级编程
  2. 中专计算机应用,中专计算机应用论文
  3. 如何建立论坛的核心用户--引发的思考
  4. P4449 于神之怒加强版
  5. Linux下安装Redis(三分钟搞定)
  6. vm和openstack_最佳新OpenStack技巧和窍门
  7. 使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来
  8. Java Web学习总结(7)——HttpServletRequest对象
  9. ConcurrentHashMap 实现细节(转)
  10. RGB vs YCbCr(YUV)
  11. Acuro二维码识别与降落对准
  12. 【经验分享】如何将拍摄的照片制作成扫描件 PS+WORD教程
  13. 读《期货市场计算机分析指南》笔记
  14. oracle 12c 死锁 处理,oracle - PLSQL Oracle 12c死锁,为什么需要对SSX Table锁进行独立删除? - 堆栈内存溢出...
  15. [LeetCode] Largest Perimeter Triangle
  16. jotform 设计器_使用JotForm 4.0减轻表单构建的痛苦
  17. 华为通信基础面试题库以及答案
  18. cdma特有效应_CDMA技术有那些特点及优点?
  19. 小白网工成长笔记之OSPF(1)
  20. 不同坐标系数据切片统一方法

热门文章

  1. tensorflow源码安装
  2. 一个从文本文件里“查找并替换”的功能
  3. Provisioning Services 7.8 入门系列教程之十一 通过版本控制自动更新虚拟磁盘
  4. Python基础笔记,后续更新
  5. springside 参考地址
  6. Hadoop--初识Hadoop
  7. 一、【Collection、泛型】
  8. 深度学习之非极大值抑制(Non-maximum suppression,NMS)
  9. Systemd 入门教程之命令篇
  10. Django后台项目之用户管理功能开发流程