Spring ::如果一个新的线程将由Spring在事务中强制执行

时间:2014-04-10 10:35:23

标签: spring spring-transactions

我们使用声明性spring transaction属性来保证数据库的完整性。我们的一些代码调用webservice,它们在sharepoint中执行大量的操作。问题是当webservices花费更长的时间时,用户会因为弹簧而导致死锁,这会阻碍后端。

如果我在一个具有spring事务声明属性的函数中创建一个新线程,那么会从spring中忽略它吗?

[Transaction(TransactionPropagation.Required, ReadOnly = false)]
    public void UploadPDFManual(/*parameters*/)
    {
       //DO some data base related things

        if (revisionPDFBytes != null)
        {
          //my sharepoint call which calls webservice
           Task.Factory.StartNew(() => DocumentRepositoryUtil.CreateSharepointDocument(docInfo)); // I draw a new thread from ASPNET worker thread pool.
        }
    }

我应该选择其他任何选择吗?

1 个答案:

答案 0 :(得分:0)

您不需要在交易中执行此操作。事务使数据库正确保存对象。就是这样。所有其他东西必须在事务提交后完成。在Java中,您可以使用Spring的事务同步或JMS来实现它。看一下接受的答案over here

More useful info特定于.NET(见17.8)。