定义一个根据条件进行数据源切换的自定义注解。
一、 定义注解类
就这样子:

类可自定义参数,类似于:

二、 AOP实现注解功能
@Aspect
@Order(-1)
@Component
public class DataSourceFilterAspect {
@Resource
private DataSourceFilterService dataSourceFilterService;
/**
* 设置切入点
*/
@Pointcut("execution(* com.demo.service.impl.*.*(..))")
public void pointCut(){}
/**
* 执行方法前更换数据源
*/
@Before("pointCut()")
public void doBefore(JoinPoint point) throws IOException {
// 通过切入点获取目标类和方法
Class<?> target = point.getTarget().getClass();
MethodSignature signature = (MethodSignature) point.getSignature();
Method method = signature.getMethod();
// 注解出现在类上或方法上时,对非私有成员生效
if ((target.isAnnotationPresent(DataSourceFilter.class))
|| (method != null && method.isAnnotationPresent(DataSourceFilter.class)) ) {
// 自定义数据源切换方法
dataSourceFilterService.setDataSource();
}
}
}
ps:AOP对类内部调用及私有方法不生效



被折叠的 条评论
为什么被折叠?



