`
1998a
  • 浏览: 114138 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

xwork源代码--Configuration

XML 
阅读更多

1.com.opensymphony.xwork2.config.entities.PackageConfig
PackageConfig中Constructor为protected,所有实例的初始化都要通过内部内Builder,例如:

PackageConfig pack = new PackageConfig.Builder("test").build();为何?
Builder的文档为:
/**
     * The builder for this object.  An instance of this object is the only way to

construct a new instance.  The
     * purpose is to enforce the immutability of the object.  The methods are structured in

a way to support chaining.
     * After setting any values you need, call the {@link #build()} method to create the

object.
     */
Build方法如下:
public PackageConfig build() {
            target.actionConfigs = Collections.unmodifiableMap(target.actionConfigs);
            target.globalResultConfigs = Collections.unmodifiableMap

(target.globalResultConfigs);
            target.interceptorConfigs = Collections.unmodifiableMap

(target.interceptorConfigs);
            target.resultTypeConfigs = Collections.unmodifiableMap

(target.resultTypeConfigs);
            target.globalExceptionMappingConfigs = Collections.unmodifiableList

(target.globalExceptionMappingConfigs);
            target.parents = Collections.unmodifiableList(target.parents);

            PackageConfig result = target;
            target = new PackageConfig(result);
            return result;
        }
最后为何在在原来target基础上新new一个PackageConfig呢?
我的想法是这样做的目的是保证PackageConfig是个immutable对象,就是说客户端得到的PackageConfig

对象都是不可变的,所有的可变性操作都是通过PackageConfig.Builder实现的。同样,ActionConfig、

ResultTypeConfig等Config类型对象的immutable也是通过这种方式实现的。

2.com.opensymphony.xwork2.config.Configuration
这个Configuration对象让我想起来Topcoder的ConfigurationAPI组件,一个DTO对象,用于向其他组件

提供对配置文件内容的映射。具体关系如下图:
 
与之不同的是,这里的Configuration还包括了一个reload方法,用于告诉Configuration加载配置文件

。当然,采用了Strategy模式,所有的配置文件读取细节都delegate给ConfigurationProvider,这样一

来便于更改配置文件细节,达到了与核心解耦的目的。

com.opensymphony.xwork2.config.providers.XmlConfigurationProvider便是读取XML配置文件的

provider。

3、com.opensymphony.xwork2.config.ConfigurationManager
这才是configuration最核心的地方。所有上面说到的Configuration或是ConfigurationProvider都被聚

合到ConfigurationManager里,通过getConfiguration这个方法得到Configuration对象。
public synchronized Configuration getConfiguration() {
        if (configuration == null) {
            setConfiguration(new DefaultConfiguration(defaultFrameworkBeanName));
            try {
                configuration.reloadContainer(getContainerProviders());
            } catch (ConfigurationException e) {
                setConfiguration(null);
                throw new ConfigurationException("Unable to load configuration.", e);
            }
        } else {
            conditionalReload();
        }

        return configuration;
}

1
0
分享到:
评论

相关推荐

    xwork-core-2.2.3源文件

    《深入解析xwork-core-2.2.3源代码》 xwork-core是Struts2框架的核心组件之一,它在Web应用开发中扮演着至关重要的角色。xwork-core-2.2.3源文件的获取可能确实需要一番搜寻,但它的价值在于为我们提供了深入理解...

    xwork-2.0.5-src

    通过对`xwork-2.0.5`源代码的深入研究,开发者不仅可以掌握Struts2的核心运作机制,还能更好地优化应用性能,解决实际问题。同时,这也为理解和学习其他基于XWork的框架(如Struts2)奠定了坚实的基础。 总之,`...

    xwork-2.1.2-sources

    在给定的压缩包文件"xwork-2.1.2-sources"中,包含了XWork库的源代码,这对于我们深入理解Struts2的工作原理以及自定义行为具有重要意义。 1. **XWork的核心概念**: - **Action**: 在Struts2中,Action是业务逻辑...

    xwork 源代码

    《深入解析xwork源代码——基于xwork-2.1.6版本》 xwork,作为Struts2框架的核心组成部分,扮演着至关重要的角色。它提供了动作调度、数据验证、类型转换等一系列关键功能,是Java Web开发中的一个关键组件。在深入...

    Xwork源代码源文件下载

    在Xwork源代码中,你可以找到以下几个关键知识点: 1. **Action与Command模式**:Xwork基于设计模式中的Command模式,实现了Action接口,Action是业务逻辑的载体,接收并处理来自用户请求的数据。 2. **OGNL...

    xwork源代码(webwork源代码,xwork source,)

    《XWork源代码详解——深度剖析WebWork框架基础》 XWork源代码是WebWork框架的核心组成部分,WebWork是一款强大的MVC(Model-View-Controller)框架,它为Java Web应用提供了一种灵活且可扩展的开发模式。XWork作为...

    xwork2源代码(整理)

    《深入剖析xwork2源代码:为Struts2学习打下坚实基础》 在Java Web开发领域,Struts2框架以其强大的MVC架构和灵活的扩展性被广泛应用。而作为Struts2的核心组件,xwork2扮演着至关重要的角色。通过深入研究xwork2的...

    xwork-2.1.5源代码

    《深入解析xwork-2.1.5源代码》 xwork是一个强大的Action框架,它在Web应用开发中起着核心作用,特别是在Struts2框架中。xwork-2.1.5是其一个重要的版本,它包含了丰富的功能和优化改进。这个版本的源代码为我们...

    xwork2源代码(2010-08-11)

    在源代码中,我们可以研究`xwork.xml`和相关的配置处理类,如`DefaultConfiguration`和`PackageConfig`,来了解如何加载、解析和应用这些配置。 此外,Interceptor(拦截器)是XWork2的一大特色,它允许在Action...

    xwork 2.1.1源代码

    这次我们关注的是XWork 2.1.1的源代码,这对于深入理解Struts2的工作原理以及进行自定义扩展非常有帮助。 首先,XWork的核心组件包括: 1. **Action**:Action是业务逻辑处理的主要载体,负责接收请求、处理业务并...

    xwork-1.0.5源码

    7. **src**: 源代码目录,包含了所有Java源文件,这是理解XWork工作原理的关键部分。 8. **lib**: 库目录,存放了XWork运行时所需的第三方依赖库。 **关键知识点** 1. **动作调度(Action Dispatching)**: XWork...

    精通Java EE整合应用案例 源代码19章 chat

    含源代码,由于文件大小限制,lib目录下的jar文件已经被删除,需要自己上网下载,列表如下: antlr-2.7.5H3.jar asm.jar aspectjweaver-1.5.2a.jar cglib-nodep-2.1_3.jar commons-beanutils-1.7.1-20061106.jar ...

    struts2所有的jar,包含源代码

    压缩包中的“源代码”可能包含了Struts2框架的全部或部分源码,包括XWork,它是Struts2的基础框架,负责处理动作调用、异常处理和类型转换等。通过阅读源代码,开发者可以深入了解Struts2的工作原理,定制自己的拦截...

    XWork 源码

    在XWork-2.1.2版本的源代码中,我们可以看到以下几个关键部分: 1. **docs**:这个目录包含了项目的文档,如API参考、用户指南和开发者文档。通过阅读这些文档,你可以了解XWork的功能、API用法以及如何将其集成到...

    struts-2.2.3 src源代码

    这个版本的Struts源代码提供了对核心功能和扩展模块如XWork的深入理解。 在Struts 2.2.3中,"src"目录包含的源代码分为两大部分:Struts2 Core和XWork2 Core。这两个组件是Struts框架的核心,它们协同工作以实现...

    struts2之xwork

    在`xwork-2.0.5`这个压缩包中,包含了XWork 2.0.5版本的相关源代码。通过研究这些源码,开发者可以深入了解XWork的内部实现,包括Action、Interceptor、Configuration等关键类的实现细节,以及它们是如何协同工作的...

    Xwork的源文件

    当你导入XWork的源代码时,你可以看到以下几个关键部分: 1. **Action**:在`com.opensymphony.xwork2.action`包下,Action接口定义了Action的基本行为,如execute方法。Struts2还提供了一些预定义的Action基类,如...

    徒手配置Struts2

    2. **classes文件夹**:用于存放所有Java源代码文件,这些文件需要编译成.class文件后才能运行。 3. **lib文件夹**:存储项目所需的第三方库文件。对于Struts2项目而言,至少需要包含以下jar包: - struts2-core-...

    集合 struts2+spring+hibernate

    另外,还需要包括`xwork-core-2.x.x.jar`用于动作处理,`ognl-2.6.x.jar`用于对象图形导航,`freemarker-2.3.x.jar`作为视图模板引擎,`commons-logging-1.x.x.jar`提供日志服务,以及`commons-fileupload-1.2.1.jar...

    Spring3.0+Struts2.1+ Hibernate3.5融合步骤

    Hibernate 是一个开放源代码的对象关系映射(ORM)工具,用于将 Java 应用程序中的对象映射到数据库表中。Hibernate3.5 是一个非常成熟且功能丰富的版本,提供了许多高级特性,例如懒加载、缓存策略、查询语言支持等...

Global site tag (gtag.js) - Google Analytics