需求:
在现在基于注解式开发的流程中,太多的流程不方便调用函数进行处理业务,或者说调用函数处理业务不够优雅。
比如:多数据库切换中,我们在调用不同的方法的时候,我们希望调用不同的数据库,切换不同的数据源。我们一般就是数据库管理实在一个模块中,如果进行函数调用的话,就显得代码.... 不好看。
需要准备的知识点:
spring-aop,接口,反射基本知识即可。
以下根据一个简单的数据源切换的功能进行讲解和实现:
流程:
配置数据源 -> 切换数据源功能 -> 配置注解类 -> 配置aop切点以及处理函数 -> 调用时在方法上添加注解即可。
注:配置数据源,切换数据源功能,不是主要就不需要讲解了。
配置注解类:
注解类:value就是各个数据库切换的区别,比如master,dev...,master表示第一个数据库,dev表示第二个数据库
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Ds {
// 数据源 名称
String value();
}
注解生效类:
@Aspect
@Component
public class DsAdvice {
/**
* 所有有Ds注解的方法.
*/
@Pointcut("@annotation(com.newhood.framework.dynamic.annotation.Ds)")
public void methodWidthDs() {
}
/**
* @param joinPoint 切点
**/
@Around("methodWidthDs()")
public Object doAroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
// ....
}
}
调用:
在方法上面添加注解即可。