guice - @Transactional - 不工作

guice - @Transactional - not working

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

Managing transactions in JavaSE with Hibernate and Guice

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

  1. 取决于 guice-persist
  2. 使用 google 的 @Transactional 注释
  3. 仅在 public 或由 guice
  4. 管理的受保护方法上使用注释
  5. 正在启动 PersistService ...

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

(使用 Guice 4.0 不是问题)。

如果我们绑定到一个接口或某些特殊要求,我们往往只绑定我们的 classes。因此,如果我们有一个简单的 class,它有一个零参数构造函数或用 @Inject 注释,我们就不会在模块中绑定它。

public class AA {

    public AA() {

    }

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

如果注入 class AA,调用 test() 将输出

package.test.AA$$EnhancerByGuice$$e2d19b62

升级到 Guice 4.1 后输出为

package.test.AA

将以下内容添加到模块会将注入更改回代理。这就是 @T运行sactional 使用 AOP

的工作方式
bind(AA.class);