|  |  |  | 
|---|
|  |  |  | package com.dy.common.multiDataSource; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.common.contant.Constant; | 
|---|
|  |  |  | import com.mysql.jdbc.StringUtils; | 
|---|
|  |  |  | import com.mysql.cj.util.StringUtils; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.aspectj.lang.ProceedingJoinPoint; | 
|---|
|  |  |  | import org.aspectj.lang.annotation.Around; | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.lang.reflect.Method; | 
|---|
|  |  |  | import java.util.Objects; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 多数据源应用中,通过注解确定某个数据源 | 
|---|
|  |  |  | * 例如在Services层方法上注解: | 
|---|
|  |  |  | * @DataSource("test") | 
|---|
|  |  |  | * 表示应用数据源test | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Aspect | 
|---|
|  |  |  | @Order(Constant.AspectOrderDataSource) | 
|---|
|  |  |  | 
|---|
|  |  |  | DataSource dataSource = method.getAnnotation(DataSource.class); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Objects.nonNull(dataSource) && !StringUtils.isNullOrEmpty(dataSource.value())) { | 
|---|
|  |  |  | log.info("切换数据源为" + dataSource.value()); | 
|---|
|  |  |  | //log.info("切换数据源为" + dataSource.value()); | 
|---|
|  |  |  | //强制转成方法上配置的数据源,替换掉DataSourceContext中保存的数据源 | 
|---|
|  |  |  | DataSourceContext.set(dataSource.value()); | 
|---|
|  |  |  | }else{ | 
|---|