在Spring中将事务服务注入到另一个事务服务中是一种好习惯吗?

Seldo97:

我很con异。我发现了有关将@Service课程注入另一个@Service课程的帖子但是,如果两个类都带有@Transactional注释怎么办?@Transactional有所作为,或者更好的做法是注入存储库?

简单示例:

@Transactional
@Service
public class BBBServiceImpl implements BBBService {
    
    private final BBBRepository bbbRepository;

    // @Autowired constructor, methods etc...
    
}

第二类:

@Transactional
@Service
public class AAAServiceImpl implements AAAService {

    private final AAARepository aaaRepository;
    private final BBBService bbbService;
    
    @Autowired
    public AAAServiceImpl(AAARepository aaaRepository, BBBService bbbService) {
        this.aaaRepository = aaaRepository;
        this.bbbService = bbbService;
    }

    // methods etc...
}

或更佳的解决方案是:

@Transactional
@Service
public class AAAServiceImpl implements AAAService {

    private final AAARepository aaaRepository;
    private final BBBRepository bbbRepository;
    
    @Autowired
    public AAAServiceImpl(AAARepository aaaRepository, BBBRepository bbbRepository) {
        this.aaaRepository = aaaRepository;
        this.bbbRepository= bbbRepository;
    }

    // methods etc...

}
克莱里斯-谨慎谨慎-

通常,不应该是事务性的,而应该是它们的方法。@Transactional如果相关项目需要交易性,则应申请有时,这意味着您将组成多个级别,因为您甚至可以看到各个部分都需要@Transactional有时,这意味着堆栈中只有一个级别需要它。您必须根据软件的逻辑要求来确定。

适用的情况@Transactional是您拥有协调订单运送的服务;用于标记已发货订单并写入包裹信息的更新应以事务方式进行。因此,OrderHandlingService#shipParcel应该是@Transactional因此应任何方法涉及的数据处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

让一个Spring bean继承另一个Spring bean是一种好习惯吗?

在Laravel中从另一个控制器调用控制器是一种好习惯吗?

在春季应用中将Controller注入服务层是一个好习惯吗?

将变量存储为另一个变量的属性是一种好习惯吗?

使用getter渲染React组件内的另一个组件是一种好习惯吗?

在Laravel Model类上添加自定义方法以在另一个表中插入记录是一种好习惯吗?

如何在Angular中将数组从一个服务注入到另一个服务的数组中

使用事务外的领域查询对象是一种好习惯吗?

将include指令合并到一个文件中是一种好习惯吗

将一个断言放在afterEach块中是一种好习惯吗?

使用localstorage在同一域下的另一个页面存储用户的电子邮件地址是一种好习惯吗?

从同一控制器的另一个REST端点直接调用REST端点(方法)是一种好习惯吗?

在另一个方法中调用一个方法是一个好习惯吗?- PHP

Angular 2将服务注入到另一个服务中未定义

在组件的模板中使用服务数据-这是一种好习惯吗?

JFrame-在一个JFrame中使用多个面板是一种好习惯吗?

在$ rootScope中存储变量是一种好习惯吗?

在ThreadPoolExecutor中设置allowCoreThreadTimeOut()是一种好习惯吗?

在dataProvider中定义期望是一种好习惯吗

在ReactJS中操作DOM是一种好习惯吗?

在Angular 2中的html模板中引用服务是否是一种好习惯?

将一种服务的角度依赖注入到另一种服务中,以进行路由防护

在非唤醒服务中轮询gps位置数据是否是一种好习惯?

将行为嵌入到Entity Bean中是一种好习惯吗?

将用户输入编码到数据库中是一种好习惯吗?

了解Spring事务-当一个事务方法调用另一个事务方法时会发生什么?

无法在Kubernetes集群中将一个服务ping到另一个服务?

同步WebSQL事务与内部的另一个事务

将 Spring 中的 @Autowired 字段设置为私有是一种好习惯吗?