我想澄清一下Java EE中的拦截器的概念。我已经阅读了Java EE规范,但是还是有些困惑。请提供一些能够澄清这个概念的有用链接或教程。我们何时、为什么使用拦截器?
我想澄清一下Java EE中的拦截器的概念。我已经阅读了Java EE规范,但是还是有些困惑。请提供一些能够澄清这个概念的有用链接或教程。我们何时、为什么使用拦截器?
https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors
Java EE 7 还在 Java Transaction API 中引入了新的 @Transactional 注解。这使您能够在 EJB 外部拥有容器管理的事务。该注解被定义为拦截器绑定,并由 Java EE 运行时实现。@Transactional 的工作示例位于以下位置:https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope
拦截器用于为托管的bean添加AOP功能。
我们可以使用@Interceptor注释将拦截器附加到我们的类上。 每当调用我们类中的方法时,附加的拦截器都会拦截该方法调用并执行其拦截方法 (interceptor method)。(请参见下面的示例,可通过@AroundInvoke注释实现)
我们可以使用@AroundConstruct注释来拦截类的生命周期事件 (对象创建,销毁等)。
拦截器和Servlet过滤器(Servlet Filters)的主要区别在于:我们可以在WebContext之外使用拦截器,但是过滤器是特定于Web应用程序的。
拦截器的常见用途包括日志记录、审计和性能分析。
更详细的介绍,请阅读这篇文章: https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/
@Component
public class AuthInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response, Object handler) throws Exception {
//Here you can write code to validate the auth token.
}
}