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

来源:中国IT实验室 作者:佚名 2008-05-14 出处:pcdog.com

eclipse  hibernate  java  mysql  oracle  
上一页 1 2 3 下一页 
    这还不够,因为在项目中,我们往往可能在不同的DataSource的实现上切换。多数情况下,我们会使用类似C3P0这样的数据连接池,当然,也可能会通过JNDI来指定我们的DataSource。所以,我们在这里很有必要对JDBC连接相关的关注点再一次进行分离。
引入一个jdbc.properties的文件指定JDBC相关的链接信息,并在Spring配置文件中导入这些配置:

    <!– A Local dataSource Definition using c3p0 connection pool –>
     <bean id=”dataSource” class=”com.mchange.v2.c3p0.ComboPooledDataSource” destroy-method=”close”>
      <property name=”driverClass” value=”${connection.driver_class}”/>
      <property name=”jdbcUrl” value=”${jdbc.connection.url}”/>
      <property name=”idleConnectionTestPeriod” value=”${jdbc.pool.c3p0.idle_connection_test_period}” />
      <property name=”preferredTestQuery” value=”${jdbc.pool.c3p0.preferred_test_query}” />
      <property name=”maxIdleTime” value=”${jdbc.pool.c3p0.max_idle_time}” />
      <property name=”properties”>
       <props>
        <prop key=”user”>${jdbc.connection.username}</prop>
        <prop key=”password”>${jdbc.connection.password}</prop>
        <prop key=”c3p0.acquire_increment”>${jdbc.pool.c3p0.acquire_increment}</prop>
        <prop key=”c3p0.max_size”>${jdbc.pool.c3p0.max_size}</prop>
        <prop key=”c3p0.min_size”>${jdbc.pool.c3p0.min_size}</prop>
       </props>
      </property>
     </bean>

     <!– Hibernate SessionFactory definition using exposed dataSource –>
     <!– hibernate.properties and hibernate.cfg.xml will be loaded on startup –>
     <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
      <property name=”dataSource” ref=”dataSource”/>
      <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>

    connection.driver_class=com.mysql.jdbc.Driver

    jdbc.connection.url=jdbc:mysql://192.168.1.251:3307/test
    jdbc.connection.username=root
    jdbc.connection.password=root

    jdbc.pool.c3p0.acquire_increment=2
    jdbc.pool.c3p0.max_size=20
    jdbc.pool.c3p0.min_size=2
    jdbc.pool.c3p0.preferred_test_query=’SELECT 1′
    jdbc.pool.c3p0.idle_connection_test_period=18000
    jdbc.pool.c3p0.max_idle_time=25000

    这样,一段配置变成了3个文件。但是通过重构,我们可以轻松在本地实现数据库切换(修改jdbc.properties),数据连接池切换(修改jdbc.properties和applicationContext.xml),hibernate的Global配置切换等功能。这些功能会提供你更加灵活的调试方式。

    3. 整理你的配置文件,不要让它们分散到各处

    这一点作为一个最佳实践提出来,主要是因为在项目中,我们可能使用到的技术框架和配置文件是很难预期的。而默认情况下,这些配置文件所存放的位置也不同,比如Spring,往往会把applicationContext.xml文件放在WEB-INF/目录下,而hibernate和struts默认是放在classpath下的。这就为管理配置文件带来了不便。所以,一个比较好的做法,是把我们的配置文件都放在一起。通过存放在不同的目录结构进行管理。例如,把所有的配置文件都放到classpath下。

    如果你用maven进行项目管理,maven会为你创建专门存放配置文件的目录(通常是一个叫做resource的目录)。如果不使用maven,我们也可以做类似的工作。以我个人的习惯为例,我喜欢在项目中建立一个叫做conf的source folder来存放所有的配置文件。由于conf是一个source folder,所以它会被类似eclipse这样的IDE自动编译到classpath下,那么我们就可以在这个目录下创建一些package,例如context的package专门存放Spring相关的配置文件,persistent专门存放ORM相关的配置文件,web专门存放表示层的配置文件。而其他的一些配置文件,则直接放到conf根目录下。


更多内容请看PCdog.com--J2EE安装配置  win98使用技巧专题
上一页 1 2 3 下一页 
上一篇:J2ME程序员新手开发入门的几大要点
下一篇:J2EE自定义标签的详细