spring boot 1.5.1 版本
在只连接一个DataSource,我们一般这么配置(简化):
spring.datasource.url=jdbc:mysql://localhost:3306/test2
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.tomcat.test-while-idle=true
这里spring boot reference会要求我们针对test-while-idle参数需要使用 .tomcat 前缀,如果你使用intellij idea IDE,自动提示时也会帮你加上这个前缀。
这时,我们使用代码打印一下DataSource的信息:
@RestController
public class TestController {
@Autowired private DataSource ds;
@RequestMapping("/testdb")
public String testdb() {
return ds.toString();
}
}
可以得到如下返回:
可以看到生效了!
那么切换到多数据源的情况下,应该如何配置呢?第一个念头肯定是:
spring.datasource.primary.url=jdbc:mysql://localhost:3306/test1
spring.datasource.primary.username=root
spring.datasource.primary.password=
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.primary.tomcat.test-while-idle=true
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/test2
spring.datasource.secondary.username=root
spring.datasource.secondary.password=
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.secondary.tomcat.test-while-idle=true
直接在tomcat前面加上primary和secondary,可是没有生效,看结果:
去掉 .tomcat 之后运行,再看DataSource,就生效了!