其他分享
首页 > 其他分享> > Spring AOP与@Transactional批注

Spring AOP与@Transactional批注

作者:互联网

我想使用Spring的事务管理功能实现事务.但是我不确定哪个更好(AOP vs @Transactional).两种功能都能正常工作吗?开发效率是否有差异?

(添加)
在这里,AOP的意思是“使用AspectJ而不显式使用@Transactional注释”

(添加)
 我想知道批注配置和基于XML的配置的区别

解决方法:

我自己想知道这个.我在Spring forum上找到了关于此主题的很好的讨论.

下面,我总结了上述链接中的内容:

AOP事务划分

好处:

> Java代码没有事务配置,而是包含在配置文件中的代码之外
> Java代码与Spring库没有直接依赖关系
>交易管理集中在一处
>可以将事务边界应用于您不容易修改的源代码

缺点:

> AOP的复杂性.仅凭代码尚不清楚事务边界位于何处,并且开发人员可能通过例如修改应用切入点的方法签名而无意中破坏了事务.
>需要施加两个位置(源代码和AOP配置)以应用事务边界

@Transactional Spring注解

好处:

>在检查源代码时,可以更清楚地理解事务性边界

缺点:

> Java代码与事务声明(尽管仅在元数据级别,但是仍然需要Spring导入)结合在一起.

讨论使我想起了JPA注释和JPA XML配置.使用基于XML的JPA配置,实体可以“更干净”,但是值得付出努力吗?甚至是分隔是否有害(能够打开Java源文件并基于@Entity批注立即知道该类是EJB很好)?实际上,在我看来,大多数开发人员都选择使用JPA批注.尽管在这种情况下,与@Transactional不同,jpa批注是一个标准,因此可以帮助您减轻一些麻烦.

就是说,我参与了一些项目,因为我们使用了Spring的AOP配置来注释Struts2(网络)拦截器,以允许每个请求进行单个事务,而且效果很好.在这种情况下,我们不必担心服务层或其他地方的事务边界-一切都已经参与了事务,并且由于在拦截器关闭事务之前呈现的视图,因此无需应用OpenSession / EntityManagerInView解.

标签:spring-transactions,spring
来源: https://codeday.me/bug/20191122/2062870.html