gpt4 book ai didi

java - Springs @Transactional 仅适用于代理

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:38 26 4
gpt4 key购买 nike

我有一个使用 Springs @Transactional 进行数据库回滚的方法。当我这样定义事务管理器时它工作正常:

    <tx:annotation-driven transaction-manager="txManager" mode="proxy" />

但是当我更改为 mode="aspectj" 时,它不会在方法抛出异常时回滚。

这两种模式的使用方式有什么不同吗?

最佳答案

“aspectj”模式只有在加载时织入或编译时织入启用时才有效。如果不是,则 @Transactional 注释将不会应用于注释的方法。

不能使用默认的代理模式来注解private方法。这就是 aspectj 模式有用的地方。某些框架(例如 Web 服务的 W2O)需要类类型本身才能工作。使用代理模式这可能是不可能的,因为类被包装在代理类包装器中。这是使用 AspectJ 的另一个原因。

如果使用public方法并且没有特殊的框架限制,那么代理模式就足够了。

另请参阅:Transaction Management

关于java - Springs @Transactional 仅适用于代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17674427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com