guice - @Transactional - 不工作
guice - @Transactional - not working
我正在使用 guice 4.1 和持久扩展,并希望 @Transactional 可以工作,但事实并非如此。我关注了 wiki 并阅读了这个 post,但无济于事:
Managing transactions in JavaSE with Hibernate and Guice
只是重申...我正在做:
- 取决于 guice-persist
- 使用 google 的 @Transactional 注释
- 仅在 public 或由 guice
管理的受保护方法上使用注释
- 正在启动 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);
我正在使用 guice 4.1 和持久扩展,并希望 @Transactional 可以工作,但事实并非如此。我关注了 wiki 并阅读了这个 post,但无济于事:
Managing transactions in JavaSE with Hibernate and Guice
只是重申...我正在做:
- 取决于 guice-persist
- 使用 google 的 @Transactional 注释
- 仅在 public 或由 guice 管理的受保护方法上使用注释
- 正在启动 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);