我有一个jodd项目,它使用Proxetta和JTX在服务类上创建事务。问题是当我尝试调试我收到的服务类时:
由于缺少行号属性而无法安装断点
我怀疑它们与Proxetta生成代理类的方式有关,因为在Spring中,如果你没有类的接口,就会发生同样的情况。
我使用Eclispe,这里是如何初始化Proxetta的:
public void initProxetta() {
ProxyAspect txServiceProxy = new ProxyAspect(AnnotationTxAdvice.class,
new MethodAnnotationPointcut(Transaction.class) {
@Override
public boolean apply(MethodInfo mi) {
return isPublic(mi) &&
isTopLevelMethod(mi) &&
matchClassName(mi, "*ServiceImpl") &&
super.apply(mi);
}
});
proxetta = ProxyProxetta.withAspects(txServiceProxy);
proxetta.setClassLoader(this.getClass().getClassLoader());
}
答案 0 :(得分:0)
请尝试以下quickstart webapp1 example吗?
它的gradle项目,因此您可以在任何IDE中快速导入它。在这个例子中,我们创建代理几乎与上面的代码完全相同,但是在操作上(这应该没有区别)。现在尝试将断点放入IndexAction
- 例如,这个断点被代理。我可以在IntelliJ IDEA中设置断点。
此外,我不知道为什么Eclipse抱怨服务实现类中的断点,因为上面使用的Proxetta创建了一个代理子类,并且不会以任何方式更改目标类。因此,当您在服务实现代码中放置断点时,它就在您的类中,而不是代理类。
最后,您是将BP放在方法上还是在代码中?如果它是第一个(在方法上),那么请尝试将BP放在服务代码中:例如,在方法体的第一行。