我正在使用 guice 4.1 和持久扩展,并希望 @Transactional 能够工作,但事实并非如此。我关注了wiki并阅读了这篇文章,但无济于事:
在 JavaSE 中使用 Hibernate 和 Guice 管理事务
只是为了重新迭代......我正在做:
- 取决于 guice-persist
- 使用谷歌的@Transactional 注释
- 仅在由 guice 管理的公共或受保护方法上使用注释
- 启动 PersistService ...
我正在使用 guice 4.1 和持久扩展,并希望 @Transactional 能够工作,但事实并非如此。我关注了wiki并阅读了这篇文章,但无济于事:
在 JavaSE 中使用 Hibernate 和 Guice 管理事务
只是为了重新迭代......我正在做:
在我们当前的 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);