Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring为带注释的方法强制事务逻辑_Java_Spring - Fatal编程技术网

Java spring为带注释的方法强制事务逻辑

Java spring为带注释的方法强制事务逻辑,java,spring,Java,Spring,我有一些用@Transactional注释的方法。此方法不是通过spring生成的代理调用的,但我需要在不使用该代理的情况下强制事务创建 是否可以实现?您可以使用在提供的代码块/回调中手动启动事务: final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); transactionTemplate.execute(new TransactionCallback<S

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

是否可以实现?

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

final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);

transactionTemplate.execute(new TransactionCallback<String>()
{
    @Override
    public String doInTransaction(TransactionStatus status)
    {
        //...
        return "Some result";
    }
});
当然,您也可以将
TransactionTemplate
定义为Springbean并直接注入它。否则,您可以在每次需要时创建它,但随后需要注入事务管理器:

@Resource
private PlatformTransactionManager transactionManager;

那使用什么呢?如果你被录取了,我将把它扩展成一个答案,并提供更多的细节。@TransactionTemplate帮助我解决了我的问题。@TomaszNurkiewicz。
@Resource
private PlatformTransactionManager transactionManager;