Java反射获取所有Controller和RestController类的方法
引入三方反射工具Reflections
<dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.10.2</version>
</dependency>
利用反射获取指定包下的Controller类
public class ControllerClassHolder {public static final Reflections REFLECTION = new Reflections("com.example.controller");public static final Set<Class<?>> CLASSES;static {CLASSES = REFLECTION.getTypesAnnotatedWith(Controller.class);CLASSES.addAll(REFLECTION.getTypesAnnotatedWith(RestController.class);)}
}
获取Controller方法
每个http请求基本都会使用@RequestMapping注解
List<Method> methods = new ArrayList<>();for (Class<?> controllerClass : CLASSES) {Method[] declaredMethods = controllerClass.getDeclaredMethods();Set<Method> methods = Arrays.stream(declaredMethods).filter(m -> m.getAnnotation(RequestMapping.class) != null).collect(Collectors.toSet());
}