Struts2初始化过程代码分析
根据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初始化过程代码分析相关推荐
- struts2请求过程源代码分析
struts2请求过程源代码分析 Struts2是Struts社区和WebWork社区的共同成果.我们甚至能够说,Struts2是WebWork的升级版.他採用的正是WebWork的核心,所以.Str ...
- 模块加载过程代码分析1
一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...
- WFD连接过程代码分析(Sink端)
WFD连接过程代码分析(Sink端) WFD建立连接首先必需建立P2P连接,随后WFD使用P2P连接的IP和端口号建立RTSP连接.本文着重分析P2P连接建立后的RTSP连接建立过程,且为一个Sour ...
- 【FFmpeg编程进阶】(15)FLV 编码器Codec初始化 ff_mpv_encode_init() 代码分析 -- 待更新
[FFmpeg编程进阶](15)FLV 编码器Codec初始化 ff_mpv_encode_init 代码分析 一.ff_mpv_encode_init() 在前面分析<[FFmpeg编程进阶] ...
- 07.显示系统:第005课_Vsync机制:第004节_surface使用vsync过程代码分析
前面的小节中,我们讲解了Vsync机制机制的框架,无论SurfaceFlinger还是APP应用程序,对Vsync的使用,都是按需进行的: 比如应用程序把新界面发送给SurfaceFlinger之后, ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- U-boot之flash初始化完全代码分析
一 代码分析 1.Board->dave->flash.c #include <common.h> #include <asm/hardware.h> #inc ...
- struts2请求处理过程源代码分析(1)
2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://www.see-source.com/ 源码解析网 网上对于struts2请求处理流程的讲解还是比较多的 ...
- 运行初始化过程代码笔记
package java_learn;import static out.Print.*; //学习多态,覆盖,动态静态绑定,向上向下转型class M{M(){println("A&quo ...
最新文章
- PL/SQL高级编程
- 中专计算机应用,中专计算机应用论文
- 如何建立论坛的核心用户--引发的思考
- P4449 于神之怒加强版
- Linux下安装Redis(三分钟搞定)
- vm和openstack_最佳新OpenStack技巧和窍门
- 使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来
- Java Web学习总结(7)——HttpServletRequest对象
- ConcurrentHashMap 实现细节(转)
- RGB vs YCbCr(YUV)
- Acuro二维码识别与降落对准
- 【经验分享】如何将拍摄的照片制作成扫描件 PS+WORD教程
- 读《期货市场计算机分析指南》笔记
- oracle 12c 死锁 处理,oracle - PLSQL Oracle 12c死锁,为什么需要对SSX Table锁进行独立删除? - 堆栈内存溢出...
- [LeetCode] Largest Perimeter Triangle
- jotform 设计器_使用JotForm 4.0减轻表单构建的痛苦
- 华为通信基础面试题库以及答案
- cdma特有效应_CDMA技术有那些特点及优点?
- 小白网工成长笔记之OSPF(1)
- 不同坐标系数据切片统一方法