com.opensymphony.xwork2.config.impl.DefaultConfiguration(Configuration接口的实现类)默认的配置类。
DefaultConfiguration的内部类:RuntimeConfigurationImpl(com.opensymphony.xwork2.config.RuntimeConfiguration接口的实现类,真正存action参数信息的地方,e.g:action名称,action命名空间等)
RuntimeConfigurationImpl内部属性:
private Map<String, Map<String, ActionConfig>> namespaceActionConfigs;==>键是namespace(命名空间),值是action名称和ActionConfig组成的map。
现实含义就是每个命名空间下的所有action信息的map,在com.opensymphony.xwork2.DefaultActionProxy的prepare()方法里面根据它的成员变量namespace,actionName从RuntimeConfigurationImpl获取到该action的ActionConfig信息。
private Map<String, ActionConfigMatcher> namespaceActionConfigMatchers;==>键是namespace,值是com.opensymphony.xwork2.config.impl.ActionConfigMatcher.ActionConfigMatcher。
private Map<String, String> namespaceConfigs;==>键是namespace,值是com.opensymphony.xwork2.config.entities.PackageConfig.getFullDefaultActionRef()方法的返回值。
com.opensymphony.xwork2.config.ContainerProvider==>接口:Provides beans and constants/properties for the Container,提供加载xml文件里面bean和constant节点后生成的内容。
com.opensymphony.xwork2.config.PackageProvider==>接口:Provides configuration packages. The separate init and loadPackages calls are due to the need topreserve backwards compatibility with the 2.0 ConfigurationProvider interface,提供加载xml文件里面package节点后生成的内容。
com.opensymphony.xwork2.config.ConfigurationProvider==>同时继承了ContainerProvider和PackageProvider两个接口的组合接口,即能同时提供加载bean和constant,package三个节点后生成的内容。
ConfigurationProvider接口上有解释:Interface to be implemented by all forms of XWork configuration classes,由所有形式的XWork配置类实现的接口。
org.apache.struts2.convention.ClasspathPackageProvider==>PackageProvider接口的实现类,该类的英文解释有点多(自行查看),简单点说就是struts2里面包范围的配置处理(例如扫面类路径下的action类)都是它在干,这个类干的事尤其重要!但是,它不会直接处理,而是委托给了它的属性actionConfigBuilder来做。
org.apache.struts2.convention.ActionConfigBuilder==>接口:找到Struts XML文件或任何插件中没有明确定义的所有动作对象(action),同时定位所有动作(action)的返回结果(result)。
org.apache.struts2.convention.PackageBasedActionConfigBuilder==>ActionConfigBuilder接口的实现类。
在struts2-convention-plugin-2.x.x.jar的struts2-plugin.xml里面能明确看到,
指定的PackageProvider实现类其中之一就是org.apache.struts2.convention.ClasspathPackageProvider,
指定的actionConfigBuilder的实现类是org.apache.struts2.convention.PackageBasedActionConfigBuilder。