2009-10-11 26 views
3

每次行爲時都可以將持久化上下文注入到scala actor中?我有一個雙Java/Scala彈簧應用程序,我使用Spring註釋將我的Java服務和方法標記爲事務性。我想在我的Scala演員中使用類似的功能。也就是說,每次響應消息時,演員應該在單個事務中進行操作。有沒有人嘗試過類似的東西,或者有沒有這種東西的例子?scala參與者和持久化上下文

回答

6

爲什麼不通過注入演員本身的Daotrait封裝持久訪問。這樣,您就可以擁有一個持久的演員是從持久性機制本身去耦:

class DaoActor(val dao: Dao) extends Actor { 

    def act() = { 
    loop { 
     react { 
     case SaveTrade(trade) => dao.save(trade) 
     case ReadTrades(date) => dao.lookup(date)   } 
    } 
    } 
} 

更重要的是,你可以Dao在Java中進行編碼,因此您也可以添加註釋@Transactional

+0

我認爲我將不得不使用某種形式的上述解決方案。我需要一個服務,我可以將它作爲標記爲「@ Transactional」的Spring上下文的一部分實例化,以便Spring正確代理對象。然後,我的演員將注入參考服務,並將調用服務來執行實際工作。這個解決方案很好,可以工作,但我希望有一個更加以Scala爲中心的解決方案。 – AnthonyF 2009-10-12 12:14:18

+0

任何一次upvote的機會呢? ':-)' – 2009-10-12 13:58:35

+0

嗯,它不會讓我。 – AnthonyF 2009-10-12 16:39:32

相關問題