SpringBoot + Druid 多数据源配置
直接上代码~
环境
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
java 代码
- DBTypeEnum,多数据源枚举类,标识master和slave之分,增减其他数据源亦方便
public enum DBTypeEnum {
MASTER, SLAVE
}
- DataSource注解类,用于在service层或dao层切换数据源,通过value进行区分,这里默认使用master库
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.TYPE,ElementType.METHOD})
public @interface DataSource {
DBTypeEnum value() default DBTypeEnum.MASTER;
}
3.DBHelper,存储当前线程使用的数据源的key,通过在切面中设置key达到关联数据源的目的
@Component
public class DBHelper {
private ThreadLocal