查了很多都是实现HandlerInterceptor,可以不用这个吗
自己写注解,在controller层和Interceptor的class里引用这个注解
想采用下面这种实现方法
首先自定义注解
第二步写interceptor的class
我比下面的图,多加了一个注解,@Priority(Interceptor.Priority.APPLICATION)
最后在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