如何使用外部properties文件配置数据源?
李小翔
2013-10-29 19:08

内容列表

默认情况下，grails通过 grails-app/conf/DataSource.groovy 加载数据源信息，这种方式有利有弊，最大的不便之处在于必须编译后才能生效。
google一下，有很多类似的解决方案，通过加载一个外部的 properties 文件来代替/补充 DataSource.groovy。
安装 BroToolkit 后，自动生成的 DataSource.groovy 中，包含了调用外部 DataSource.properties 的代码，此外，还会在工程的 src/java 下生成一个示例 properties 文件。
简单分析一下 DataSource.groovy 文件：
import org.springframework.core.io.support.PropertiesLoaderUtils as PLU;
import org.springframework.core.io.ClassPathResource as CPR;
......
environments { 
    production { 
       // 定义数据源
        dataSource { 
           ......
       } 
       // 从 DataSource.properties 中加载数据库连接信息
        try { 
            ConfigObject properties = new ConfigSlurper().parse(PLU.loadProperties(new CPR(’DataSource.properties’)));
            dataSource.merge( properties.dataSource );
            dataSource_auditlog?.merge( properties.dataSource_auditlog );
            hibernate.merge( properties.hibernate );
       }  catch (java.io.FileNotFoundException e){ } 
   } 
} 
以及 DataSource.properties 文件示例：
# 默认数据源
dataSource.driverClassName = oracle.jdbc.driver.OracleDriver
dataSource.username = bropen
dataSource.password = password
dataSource.url = jdbc:oracle:thin:@localhost:1521:orcl
dataSource.properties.maxActive = 50
dataSource.properties.maxIdle = 25
dataSource.properties.minIdle = 5
dataSource.properties.initialSize = 5
# 多数据源
dataSource_auditlog.driverClassName = oracle.jdbc.driver.OracleDriver
dataSource_auditlog.username = bropen
# ......