2017-04-07 119 views
4

在Spring中,您不能简单地从同一个实例调用@Transactional方法,因为AOP代理的事情。从自我代理实例中进行自我注入并调用该方法会不错吗?你看到任何缺点?春季自我注入交易

+2

有些情况下,它是最优雅的解决方案可用,我已经使用它几次。春季4.3引入了自动装配自身的新功能,恕我直言,春季支持证明这不是一个坏习惯。 – Vipin

+0

也许您也可以通过''或'@EnableAspectJAutoProxy(exposeProxy = true)'使用暴露的代理实例,请参见[SPR-10454](https:// jira.spring.io/browse/SPR-10454)和[JavaDoc](http://docs.spring.io/spring/docs/current/javadoc-api//org/springframework/context/annotation/EnableAspectJAutoProxy.html# exposeProxy--)。 – kriegaex

回答

4

这完全没问题。 此外,有一个Jira ticket支持此功能使用@Autowired注释。它已在Spring 4.3+版本中修复。但是,对于基于xml的配置或使用@Resource注释,它在早期版本中工作。

你可以看到这张票的下面的讨论。 @Transactional是用例的one此:

在@Async和@Transactional使用情况特别感兴趣。