背景:之前在公司搭建了一个springmvc框架的多数据源切换功能,这次改用springboot框架来做多数据源切换,并且事务管理问题。
准备: JDK1.8,boot 2.3, 一个成功启动的,并且能够连接数据库的springboot项目。
具体的springboot项目新建请自行百度。
项目结构:
相对于新建的项目,这里多了一个DruidConfig类,还有两个不同的service的实践类,这两个实践类是我为了验证注解@Resource和@Autowired的差异而特意写的,和多数据源切换没联系。
默认数据源改为Druid
springboot的默认数据源并不是druid,所以我们要配置下yml文件,改成druid数据源。
1.application.yml
spring:
profiles:
active: dev
2.application-dev.yml
server:
port: 8080
#spring:
# datasource:
# username: xxx
# password: xxx
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://ip:3306/xxx
#表示该配置直接为Spring容器负责处理
spring:
datasource:
druid:
url: jdbc:mysql://ip:3306/xx
username: xx
password: xxx
driver-class-name: com.mysql.jdbc.Driver
initial-size: 5
max-active: 20
min-idle: 5
max-wait: 60000
# 多数据库配置
3.pom.xml 加上需要的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
4.druidConfig.java
package com.wujj.localpractice.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
// 配置类
@Configuration
public class DruidConfig {
//若使用该数据源 必须存在该class
@Bean
// 必须将druid数据源下的属性 与该类绑定起来
//将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DataSource druidDataSource(){
return new DruidDataSource();
}
}
这样就完成了数据源Druid的配置。
验证
输出栏能看到确实现在的dataSource是Druid了。接下来我们可以做Druid的多数据源切换了。