【发布时间】:2015-09-01 08:17:16
【问题描述】:
假设我有一个 Repository 类。
@Repository
class MyRepository {
@Transactional
void method1 () {
// some logic here
}
void method2 () {
// some logic here
method1();
// some logic here
}
}
是否可以在字符串中做到这一点?它是如何工作的?
【问题讨论】:
-
该特定示例是自调用,不适用于通常的代理 AOP。
-
我怎样才能让它发挥作用?
-
通常控制器是一个调用层服务的非事务类,内部有事务方法是一个好习惯。我看不出有什么问题,如果你的问题需要这种行为,你可以毫无问题地做到这一点。
-
但是由于@chrylis 描述的原因,我的代码无法正常工作。我相信有一些技巧可以使它与非标准代理机制一起工作。
-
我认为有一种方法可以通过将
@Autowired private ApplicationContext context;添加到您的存储库中,然后当您从method2调用method1时,您可以这样做((MyRepository)context.getBean(getClass())).method1()。不过我建议不要这样做。