可以通过框架应作为处理程序对象传递的HandlerMethod对象,在拦截器中检查控制器方法上的注释。
if (handler instanceof HandlerMethod) { HandlerMethod method = (HandlerMethod) handler; if (method.getMethod().isAnnotationPresent(Security.class)) { //do processing }}但是,根据HandlerMethod javadoc中的spring文档,在Spring
3.1中引入了HandlerMethod类。在3.1之前的版本中,处理程序对象似乎是Controller实例,这使得获取调用的controller方法的注释变得困难。
您可以升级到3.1。然后从HandlerMethod对象中获取注释,或尝试解析控制器方法上的所有RequestMapping注释,然后尝试通过将RequestMappings与请求URI进行比较来确定调用了哪个方法。
如果不能选择升级,则另一种选择是使用AOP代替mvc拦截器。



