1、数据源配置
在Spring Boot中默认配置了Tomcat, HikariCP、Commons DBCP三种数据源类型,如果在classpath中都能找到的话,则Tomcat优先加载(顺序加载)
配置方式
@Bean(name="dataSource", initMethod="init", destroyMethod="close") public DataSource dataSource() { return DataSourceBuilder.create().build(); }
默认使用spring.datasource前缀的属性,也可以自定义属性,通过@Value读取
spring.datasource.url=jdbc:mysql://localhost:3306/db1 spring.datasource.username=root spring.datasource.password=123456
2、使用阿里开源的druid数据源配置
引入pom依赖,引入后配置文件中自动提示druid配置属性
com.alibaba druid-spring-boot-starter 1.1.2
配置单数据源时只需替换数据源的创建即可
return DruidDataSourceBuilder.create().build();
基于druid的多数据源配置
@Bean(name="dataSource", initMethod="init", destroyMethod="close")//别名指定 @Primary //指定为主数据源 @ConfigurationProperties("spring.datasource.druid") //指定配置文件中的属性引用 public DataSource dataSource() { return DruidDataSourceBuilder.create().build(); } /***配置其他数据源***/ @Bean(name="otherDataSource", initMethod="init", destroyMethod="close") @ConfigurationProperties("other.datasource.druid") //指定配置文件中的属性引用 public DataSource otherDataSource() { return DruidDataSourceBuilder.create().build(); }
定义配置文件
spring.datasource.druid.url=jdbc:mysql://localhost:3306/db1 spring.datasource.druid.username=root spring.datasource.druid.password=123456 spring.datasource.druid.filters=stat,wall,slf4j //druid监控配置 #自定义数据源属性配置,druid-spring-boot-starter已引入druid的配置提示,根据提示只需重新定义 #属性前缀即可,实现不同数据源的个性化配置 other.datasource.druid.type=com.alibaba.druid.pool.DruidDataSource other.datasource.druid.url=jdbc:mysql://localhost:3306/db2 other.datasource.druid.username=root other.datasource.druid.password=123456 other.datasource.druid.filters=stat,wall,slf4j
数据源在jdbctemple中的注入,通过@Qualifier注解区分数据源的使用
@Bean public JdbcTemplate jdbcTemplate(@Qualifier("dataSource")DataSource dataSource) { return new JdbcTemplate(dataSource); } @Bean("otherJdbcTemplate") public JdbcTemplate otherJdbcTemplate(@Qualifier("otherDataSource")DataSource dataSource) { return new JdbcTemplate(dataSource); }
控制台查看数据源初始化信息,可以看到两个都已初始化
--- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-2} inited
druid监控台查看
http://localhost:8765/druid/datasource.html
数据源1,Basic Info For DataSource-1920147706 数据源2,Basic Info For DataSource-2034046523