Spring 中基于模式的事务
我们使用 Spring+JPA 作为我们的RESTful Web 服务应用程序。这是一个高事务性应用程序,执行大量 CRUD 操作。
我在方法上使用 @Transaction 注释来执行事务,一切正常。
我只是想知道是否可以基于模式匹配在配置文件中的类之外管理事务,即以开头的所有方法>添加/更新/删除可以自动启用事务(不使用@Transaction注释)?
有人可以确认这是否可能吗?
如果“是”,请向我提供一些网络链接或示例。
谢谢。
We are using Spring+JPA for our RESTful web services application. This is a high transactional application and performs plenty of CRUD operations.
I am using @Transaction
annotation on methods to perform the transaction and all is working fine.
I was just wondering if the Transaction can be managed outside the class in the configuration file based on pattern matching, i.e. all methods starting with add/update/delete can automatically be Transaction enabled (without the use of @Transaction annotation)?
Could someone please confirm if that’s possible?
If ‘Yes’ please provide me with some web link or example.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当然!事实上,这是 Java 5 和 @Transactional 注释之前唯一可能的解决方案。请参阅10.5.2 声明式事务实现示例春季文档。在那里您将找到通过 XML 和 AspectJ 切入点进行事务划分配置的示例。
这是上述文档中的简单配置摘录:
如您所见,所有名称以
get
为前缀的方法都被标记为只读,而所有其他方法FooService
(xyservice.FooService.*(..))
切入点)是事务性的,不是只读的。正如您所看到的,使用更详细的 XML 语法给您带来了一些巨大的好处,例如声明性和更灵活的事务划分,这主要归功于 AspectJ 语法(请确保 首先学习它)。
Of course! In fact this was the only possible solution before Java 5 and
@Transactional
annotation. Look at 10.5.2 Example of declarative transaction implementation in Spring documentation. There you will find examples of transaction demarcation configuration via XML and AspectJ pointcuts.This is a simple configuration excerpt from the documentation pointed above:
As you can see, all methods with name prefixed with
get
are marked as read-only, while all other methods ofFooService
(x.y.service.FooService.*(..))
pointcut) are transactional and not read-only.As you can see using more verbose XML syntax gives you some great benefits like declarative and more flexible transaction demarcation, mainly thanks to AspectJ syntax (make sure to learn it first).