拦截器注释定义:
@InterceptorBinding
@Target({METHOD, TYPE})
@Retention(RUNTIME)
public @interface EntityChange {
}
拦截器定义:
@Interceptor
@Priority(1)
@EntityChange
public class DataChangeInterceptor implements Serializable {
@AroundInvoke
public Object method(InvocationContext ctx) throws Exception {...
在实体内使用注释:
@Entity
public class entity implements Serializable {
...
@EntityChange
public void setId(String id) {
this.id = id;
}
...
setId方法应触发AOP方法。但事实并非如此。万一我从Bean注释方法,它就会被触发。
在我看来,原因是实体不在EJB上下文内(它不是EJB bean)。问题是,如何使该方法以正确的方式触发拦截器。 (恕我直言,从实体EJB bean制作是不正确的)