guice - @Transactional - 不工作

时间:2017-05-19 11:56:33

标签: java hibernate transactions guice guice-persist

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

Managing transactions in JavaSE with Hibernate and Guice

重新迭代...我正在做:

  1. 取决于guice-persist
  2. 使用google的@Transactional annotation
  3. 仅对由guice管理的公共或受保护方法使用注释
  4. 启动PersistService ...

1 个答案:

答案 0 :(得分:0)

在我们当前的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

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

bind(AA.class);