gpt4 book ai didi

java - spring 为带注释的方法强制执行事务逻辑

转载 作者:行者123 更新时间:2023-11-30 09:36:16 24 4
gpt4 key购买 nike

我有一些用 @Transactional 注释注释的方法。此方法不是通过 spring 生成的代理调用的,但我需要以某种方式在不使用该代理的情况下强制创建事务。

是否可以实现?

最佳答案

您可以使用 TransactionTemplate在提供的代码块/回调中手动启动事务:

final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);

transactionTemplate.execute(new TransactionCallback<String>()
{
@Override
public String doInTransaction(TransactionStatus status)
{
//...
return "Some result";
}
});

或者如果您不需要结果:

transactionTemplate.execute(new TransactionCallbackWithoutResult()
{
@Override
protected void doInTransactionWithoutResult(TransactionStatus status)
{
//...
}
});

当然你也可以将TransactionTemplate定义为一个Spring bean,直接注入(inject)。否则,您可以在每次需要时创建它,但随后您需要注入(inject)事务管理器:

@Resource
private PlatformTransactionManager transactionManager;

关于java - spring 为带注释的方法强制执行事务逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834727/

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