2015-10-06 28 views

回答

4

查看JSR-346的答案。你可以找到它here

修饰符是CDI规范的一部分。你可以在第8章找到它。

拦截器不是CDI规范的一部分。它在1.2.5中被引用为与CDI规范的关系。它是EJB规范JSR-345的一部分,请参阅该规范中的第7章。

+2

关于拦截器的声明并不完全正确。事实上,拦截器有两种类型:即使在CDI可用之前,为Java EE 5中的EJB 3.0定义了拦截器,而在Java EE 6中的CDI中定义了更为通用的新类型的拦截器。 CDI拦截器可以应用于任何CDI bean,不仅可以应用于EJB,还可以应用于过时的旧版EJB 3.0拦截器。较新的CDI拦截器当然是CDI规范的一部分,位于第9章装饰器下方。 – OndrejM

+1

好吧,我也不完全正确。 EJB规范和CDI规范中提到的拦截器是相同的,它们都使用'@ javax.interceptor.AroundInvoke'注释来标记拦截器方法。但是,这两种规格在拦截器应用于部件的方式上有所不同。在EJB规范中,您在EJB上使用'@ Interceptors'来应用拦截器。在CDI中,您使用'@ InterceptorBinding'在任何CDI bean上应用拦截器,并且必须在beans.xml中打开它们。 – OndrejM