diff --git a/src/main/java/cn/bugstack/middleware/db/router/DBRouterJoinPoint.java b/src/main/java/cn/bugstack/middleware/db/router/DBRouterJoinPoint.java index c4fd1bdbc6af427c68d745a71aec265a98324be3..f560bf0551816940af8bbffb4cf5946709f53bb6 100644 --- a/src/main/java/cn/bugstack/middleware/db/router/DBRouterJoinPoint.java +++ b/src/main/java/cn/bugstack/middleware/db/router/DBRouterJoinPoint.java @@ -14,6 +14,7 @@ import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.lang.reflect.Method; @@ -24,6 +25,7 @@ import java.lang.reflect.Method; * Create by 小傅哥(fustack) */ @Aspect +//@Order(1) @Component("db-router-point") public class DBRouterJoinPoint { @@ -36,12 +38,10 @@ public class DBRouterJoinPoint { public void aopPoint() { } - @Around("aopPoint()") - public Object doRouter(ProceedingJoinPoint jp) throws Throwable { + @Around("aopPoint() && @annotation(dbRouter)") + public Object doRouter(ProceedingJoinPoint jp, DBRouter dbRouter) throws Throwable { Method method = getMethod(jp); - DBRouter dbRouter = method.getAnnotation(DBRouter.class); -// String dbKey = dbRouter.key(); - String dbKey = "userId"; + String dbKey = dbRouter.key(); if (StringUtils.isBlank(dbKey)) throw new RuntimeException("annotation DBRouter key is null!"); // 计算路由 String dbKeyAttr = getAttrValue(dbKey, jp.getArgs()); @@ -66,6 +66,10 @@ public class DBRouterJoinPoint { private Method getMethod(JoinPoint jp) throws NoSuchMethodException { Signature sig = jp.getSignature(); MethodSignature methodSignature = (MethodSignature) sig; + + Class[] interfaces = getClass(jp).getInterfaces(); + + return getClass(jp).getMethod(methodSignature.getName(), methodSignature.getParameterTypes()); } diff --git a/src/main/java/cn/bugstack/middleware/db/router/annotation/DBRouter.java b/src/main/java/cn/bugstack/middleware/db/router/annotation/DBRouter.java index bf258e19fce37ba9f9a6e210b618d18eae91390b..48e2f2dace99c12fce9cc71631140e84a043ab5d 100644 --- a/src/main/java/cn/bugstack/middleware/db/router/annotation/DBRouter.java +++ b/src/main/java/cn/bugstack/middleware/db/router/annotation/DBRouter.java @@ -2,13 +2,15 @@ package cn.bugstack.middleware.db.router.annotation; import java.lang.annotation.*; + /** * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! * 公众号:bugstack虫洞栈 * Create by 小傅哥(fustack) */ -//@Retention(RetentionPolicy.RUNTIME) -//@Target({ElementType.TYPE, ElementType.METHOD}) +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD}) public @interface DBRouter { String key() default ""; diff --git a/src/test/java/cn/bugstack/middleware/test/ApiTest.java b/src/test/java/cn/bugstack/middleware/test/ApiTest.java index d30ab4412298b6d0ec8ddc43e20d6be2f2011417..14e1c92e9b8b0cd3ca9b949860076ad49ef2bf5d 100644 --- a/src/test/java/cn/bugstack/middleware/test/ApiTest.java +++ b/src/test/java/cn/bugstack/middleware/test/ApiTest.java @@ -1,7 +1,11 @@ package cn.bugstack.middleware.test; +import cn.bugstack.middleware.db.router.annotation.DBRouter; import org.junit.Test; +import java.lang.reflect.AnnotatedType; +import java.lang.reflect.Method; + /** * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! * 公众号:bugstack虫洞栈 @@ -33,9 +37,22 @@ public class ApiTest { } @Test - public void test_str_format(){ + public void test_str_format() { System.out.println(String.format("db%02d", 1)); System.out.println(String.format("_%02d", 25)); } + @Test + public void test_annotation() throws NoSuchMethodException { + Class iUserDaoClass = IUserDao.class; + Method method = iUserDaoClass.getMethod("insertUser", String.class); + + DBRouter dbRouter = method.getAnnotation(DBRouter.class); + + System.out.println(dbRouter.key()); + + } + } + + diff --git a/src/test/java/cn/bugstack/middleware/test/IUserDao.java b/src/test/java/cn/bugstack/middleware/test/IUserDao.java new file mode 100644 index 0000000000000000000000000000000000000000..2f899ff2af616d3f9604b64866f566a035235cf8 --- /dev/null +++ b/src/test/java/cn/bugstack/middleware/test/IUserDao.java @@ -0,0 +1,16 @@ +package cn.bugstack.middleware.test; + +import cn.bugstack.middleware.db.router.annotation.DBRouter; + +/** + * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! + * 公众号:bugstack虫洞栈 + * Create by 小傅哥(fustack) + */ + +public interface IUserDao { + + @DBRouter(key = "userId") + void insertUser(String req); + +}