[英]Interceptor on super method in CDI 1.0/JEE6
在以下情况下,
public class Base {
@Transactional
public void doSave() {
// ...
}
}
public class Inherited extends Base {
public void someMethod() {
super.doSave();
}
@Override
public void doSave() {
super.doSave();
}
}
如果将@Transactional
批注添加到Inherited.someMethod
,则拦截器将被调用而不会出现问题。
但是,如果在继承的类上没有注释,则拦截器不会参与从Inherited.someMethod()
对超类的调用。
此外,调用Inherited.doSave()
似乎也不会调用拦截器。 我希望超类上的注释在子类上也有效。 这不是预期的行为吗?
我正在对@Transactional
注释使用Apache DeltaSpike,并且将其部署为耳战(技术上是部署为耳战)。 但是,这可能不相关,因为尝试使用自定义拦截器会显示相同的行为。
如果相关的话,这是JBoss EAP 6.3.0 Alpha。
这是预期的。 仅在管理对象时才应用拦截器。 当您使用继承方式编写它时,由于它不是CDI知道的调用堆栈的一部分,因此不会应用它。 您需要将Base
注入到您的类中并调用Base.doSave
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.