获取不到controller注解信息
Closed this issue · 4 comments
-
如果controller被cglib代理 那么获取不到controller注解信息
-
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) 判断
- 建议添加一个配置项 配置controller路径 扫描这个路径下controller信息
不晓得你是怎么代理的controller, 我尝试用aop代理了一下似乎没有这样的问题
Class aClass = object.getValue().getClass(); 改为 Class aClass = ClassUtils.getUserClass(object.getValue().getClass());
随便写个AOP,拦截到controller的方法,就能复现这个问题。@NoBugBoy
1.1.5解决了这个问题