勉強する星 2022-08-11 14:03 采纳率: 0%
浏览 116
已结题

Spring框架里,怎么使用interceptor

查了很多都是实现HandlerInterceptor,可以不用这个吗
自己写注解,在controller层和Interceptor的class里引用这个注解
想采用下面这种实现方法
首先自定义注解

img


第二步写interceptor的class
我比下面的图,多加了一个注解,@Priority(Interceptor.Priority.APPLICATION)

img


最后在controller的post方法上,加@LogEnable注解
后来问题就是,这么实装,这个拦截器拦不住😂

解决方案:
原因:因为我们使用的框架是spring框架混用resteasy,所以好多有些网上的拦截器使用不了
解决办法:
1.自定义注解

@NameBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface DoublyPrevent{}

2.拦截器,可以实现ContainerRequestFilter,也可以实现ReaderInterceptor,下面用ReaderInterceptor举例

@Provider
@DoublyPrevent
@Component
@Transactional
public class domeInterceptor implements ReaderInterceptor, WriterInterceptor{
    @Context
    public HttpServletRequest request;
    
    @Context
    public HttpServletResponse response;
    
    @Override
    public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException, WebApplicationException{
        return context.proceed();
    }

    @Override
    public Object aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException{
    context.proceed();
    }
}
        

3.controller层使用
在controller的方法上使用自定义的注解@DoublyPrevent

  • 写回答

3条回答 默认 最新

  • 运笔如飞 2022-08-11 14:12
    关注

    interceptor就是个拦截器,就是让你可以再请求发送过来先做一些处理,如果你能用别的方法达到目的,不用拦截器当然也可以啊,得看你的目的是什么,自定义注解如果能达到目的当然也是可以的,但是你再controller层才引用这个注解的话,那你为什么不直接再controller里面处理不久完了,干嘛还要拦截器,还要自定义注解呢

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月25日
  • 修改了问题 8月25日
  • 修改了问题 8月11日
  • 创建了问题 8月11日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题