吉斯 - @Transactional - 不起作用



我正在使用guice 4.1和持久扩展,并希望@Transactional可以工作,但事实并非如此。 我关注了维基并阅读了这篇文章,但无济于事:

使用 Hibernate 和 Guice 在 JavaSE 中管理事务

只是为了重申...我正在做:

  1. 取决于 guice-persist
  2. 使用谷歌的@Transactional注释
  3. 仅在由 GUICE 管理的公共或受保护方法上使用注释
  4. 正在启动持久服务...

我们在当前的 Sprint 中升级库时遇到了类似的事情。 所有失败的单元测试都与我们被注入的类有关,但未绑定在模块中。

(使用 Guice 4.0 这不是问题(。

我们倾向于只在绑定到接口或某些特殊要求时才绑定我们的类。 因此,如果我们有一个具有零参数构造函数或用 @Inject 注释的简单类,我们不会将其绑定到模块中。

public class AA {
    public AA() {
    }
    @Transactional
    public void test() {
        System.out.println("" + getClass().getName());
    }
}

如果注入了类 AA,则调用 test(( 将输出

package.test.AA$$EnhancerByGuice$$e2d19b62

升级到Guice 4.1后,输出为

package.test.AA

将以下内容添加到模块会将注入更改回代理。 这就是使用 AOP @Transactional的工作方式

bind(AA.class);

最新更新