繁体   English   中英

Spring @Transactional 和 @Service

[英]Spring @Transactional and @Service

我在一家公司工作,该公司在 @Component bean 中使用了 JPA @transactional。 我一直被告知 @Transactional 应该在 @Service bean 中使用。 有人可以解释 spring 机制之间的差异以及最佳实践是什么......以及为什么

没有区别。

此外, @Service Service 和@Component是相同的。 @Service只是开发人员经常用来表示 Spring Bean 是一种服务的一种刻板印象(可能是 DDD 的意思)

首先,没有区别。 来自 spring javadoc

@零件

表示带注释的 class 是“组件”。 当使用基于注释的配置和类路径扫描时,此类类被认为是自动检测的候选对象。 ...

@Transactional

表示带注释的 class 是“服务”,最初由域驱动设计(Evans,2003 年)定义为“作为独立于 model 的接口提供的操作,没有封装的 Z9ED39E2EA931586B73E92”。 也可能表明 class 是“业务服务外观”(在核心 J2EE 模式意义上)或类似的东西。 此注释是通用的刻板印象,各个团队可能会缩小其语义并酌情使用它。 这个注解作为@Component 的一个特化,允许通过类路径扫描自动检测实现类。

坦率地说,他们的行为方式相同。

通过在公共方法或 class 上使用 @Transactional 注释,它只需为您创建带有事务代码的代理。

IMO 对@Transactional 的精彩解释

Spring 刻板印象注释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM