默认情况下,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
# ......