首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Linux频道
中国IT教育
 
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> J2EE >> 应用服务器 >> 文章正文

J2EE应用中运用“配置”的最佳实践

文章来源中国IT实验室收集整理 作者佚名 更新时间2008-5-14 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

    本文所提到的所有内容的前提是使用一些开源框架搭建简单的J2EE应用时,对配置的运用方面的一些总结出来的最佳实践。

    1. 尽最大的可能简化你的配置

    这一点似乎是基本原则,没有人会愿意多写一行代码,配置也是代码,多一行配置,就意味着多一行的维护量。简化配置的主要途径大致有:
    1) 尽可能减少配置文件的数量
    2) 使用语义鲜明的Annotation来代替复杂的XML文件配置
    3) 使用CoC来代替配置文件
    4) 使用一些特殊的技巧来简化配置文件的内容

    2. 分离关注点,让配置文件各尽其用

    这一点似乎与第一点有所背离,不过事实上,分离关注点对于配置文件的可维护性是非常重要的一点。

    举一个针对Spring+Hibernate的配置场景作为例子。通常我们需要一个Spring的配置文件(applicationContext.xml),来配置DataSource和SessionFactory,由于Spring本身提供了针对Hibernate的Global属性进行配置的选项,所以,其实我们可以通过如下的配置文件,对Spring+Hibernate完成配置:

    <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
    <property name=”mappingResources”>
            <list>
               <value>com/demo2do/demo/entity/User.hbm.xml</value>
               <value>com/demo2do/demo/entity/Order.hbm.xml</value>
               <value>com/demo2do/demo/entity/Admin.hbm.xml</value>
            </list>
        </property>

        <property name=”hibernateProperties”>
            <props>
               <prop key=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</prop>
               <prop key=”hibernate.show_sql”>true</prop>
            </props>
         </property>
    </bean>

    在这里,我们发现,一个SessionFactory的配置实在太长了,一旦我们需要对其中的某些配置进行改动,就需要用肉眼去观察我们所需要修改的配置片段。在项目开发过程中,我们会发现,这个文件的这个配置片段修改频度会非常高,因为在一个团队中,每个人都可能需要增加一个持久化类,或者对hibernate进行一些全局化的配置修改。结果,这段配置可能会在版本管理上造成merge的混乱。

    所以,我们可以在这个基础上对这段配置进行重构,重构的原则就在于把Hibernate的配置和Spring的配置进行关注点分离。我们选择hibernate.properties对Hibernate的一些Global的选项进行指定。同时使用指定持久化类hbm配置文件路径的方式,批量定义持久化类。重构后的配置文件变成了2个:

    <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
        <property name=”mappingDirectoryLocations”>
                <list>
        <value>classpath*:persist/system</value>
        <value>classpath*:persist/role</value>
        <value>classpath*:persist/activity</value>
        <value>classpath*:persist/extension</value>
        <value>classpath*:persist/user</value>
                </list>
            </property>
    </bean>

    ######################
    ### Query Language ###
    ######################

    #################
    ### Platforms ###
    #################
    ## MySQL

    hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
    hibernate.connection.url jdbc:mysql://127.0.0.1:3306/test
    hibernate.connection.username root
    hibernate.connection.password root
    ## Oracle
    #hibernate.dialect org.hibernate.dialect.OracleDialect
    ….

    此时,我们可以发现,程序员可以独立工作,不需要为增加持久化类修改公共配置而烦恼,hibernate.properties也更加清晰的反映hibernate相关的配置。

[1] [2] [3] 下一页  

【责编:Ken】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题
 ·展现C#世界 C#程序设计专题
 ·Java入门 Tomcat的配置技巧精华专题
 ·Oracle RMAN物理备份技术详解
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航