我正在尝试清除有关Java EE中的拦截器的概念。我已经阅读了Java EE规范,但对此并不太困惑。请提供一些有用的链接或教程,以阐明我的概念。我们如何,何时,为什么使用拦截器?
拦截器用于实现业务逻辑中的跨部门关注点,例如日志记录,审核和安全性。
在Java EE 5中,拦截器仅在EJB上被允许。在Java EE 6中,Interceptors成为了它自己的一个新规范,在更高层次上进行了抽象,因此可以更通用地应用于平台中的更广泛的规范集。
它们拦截关联目标类上的调用和生命周期事件。基本上,拦截器是一个类,当调用目标类上的业务方法,发生生命周期事件(例如创建/销毁bean的方法)或EJB超时方法时,其方法就会被调用。CDI规范定义了一种使用拦截器绑定将拦截器与bean关联的类型安全机制。
在以下位置查找工作代码示例:
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