NoBugBoy/YDoc

获取不到controller注解信息

Closed this issue · 4 comments

  1. 如果controller被cglib代理 那么获取不到controller注解信息

  2. ScanControllerSwagger
    scan() 方法
    // 组装swagger-api
    Class<?> aClass = object.getValue().getClass();
    // 如果有外层路径需要加上
    String outPath = buildBaseUrl(aClass);

public String buildBaseUrl(Class<?> aClass) {
String basePath = "";
if (aClass.isAnnotationPresent(RequestMapping.class)) {
RequestMapping annotation = aClass.getAnnotation(RequestMapping.class);
if (annotation.value().length > 0) {
basePath = annotation.value()[0];
}
}
return basePath;
}
如果controller被代理了 那么outPath永远为空字符串
还应该通过 aClass.getSuperClass().isAnnotationPresent(RequestMapping.class) 判断

  1. 建议添加一个配置项 配置controller路径 扫描这个路径下controller信息

不晓得你是怎么代理的controller, 我尝试用aop代理了一下似乎没有这样的问题

Class aClass = object.getValue().getClass(); 改为 Class aClass = ClassUtils.getUserClass(object.getValue().getClass());

随便写个AOP,拦截到controller的方法,就能复现这个问题。@NoBugBoy

1.1.5解决了这个问题