[英]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 注释,它只需为您创建带有事务代码的代理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.