加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 如何从Spring HandlerInterceptor中查找Handler上调用

发布时间:2020-12-15 01:50:01 所属栏目:大数据 来源:网络整理
导读:我有一个Spring HandlerInterceptor拦截我的应用程序中的前端URL(/ app / *).我想确定要在HandlerInterceptor中调用Handler中的哪个动作方法.有没有办法查看,我是否需要向拦截器注入一些可以根据请求的路径查找的内容? 拦截器是这样的: public class PageC

我有一个Spring HandlerInterceptor拦截我的应用程序中的前端URL(/ app / *).我想确定要在HandlerInterceptor中调用Handler中的哪个动作方法.有没有办法查看,我是否需要向拦截器注入一些可以根据请求的路径查找的内容?

拦截器是这样的:

public class PageCacheInterceptor implements HandlerInterceptor {...}

它映射如下:

背景(因为我知道你会问!).我正在为我的应用添加简单的页面缓存,并希望在控制器中的每个合适的方法上使用@Cacheable之类的注释.然后,拦截器可以根据创建响应的操作确定是否缓存响应.

例如:

@RequestMapping(value = "",method = RequestMethod.GET)
@Cacheable(events={Events.NEW_ORDER,Events.NEW_STAT})
public String home(Model model) {...}

事件是导致缓存失效的事件.例如,/ widget / list动作会使其缓存的响应被保存的新窗口小部件无效.

编辑:我已经升级到最新的Spring 3.1 M2,因为this blog post暗示了我需要的功能,但是不清楚是否需要注入这些新类或对它们进行子类化.有没有人用它们来拦截拦截器中的HandlerMethod?

最佳答案
好的,所以解决方案实际上非常简单:

1)升级到Spring 3.1

2)RTFM(正确)

For example a HandlerInterceptor can cast the handler from Object to HandlerMethod and get access to the target controller method,its annotations,etc

3)在Interceptor中将处理程序对象强制转换为HandlerMethod.

然后你可以做这样的事情:

    HandlerMethod method = (HandlerMethod) handler;
    Cacheable methodAnnotation = method.getMethodAnnotation(Cacheable.class);
    if (methodAnnotation != null) {
        System.out.println("cacheable request");
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读