每次Scala Actor执行时,是否可能注入一个持久性上下文?我有一个双重的Java/Scala Spring应用程序,并使用Spring注释来标记我的Java服务和方法作为事务性。我希望在我的Scala Actor中使用类似的功能。也就是说,Actor应该在每次响应消息时都在单个事务中运行。是否有人尝试过类似的事情或者是否有这种类型的示例?
为什么不通过一个被注入到actor本身的Dao trait来封装持久性访问呢?这样,您可以拥有一个与持久性机制本身解耦的持久性actor:
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
注释。
@Transactional
,以便Spring正确地代理对象。然后,我的actor将被注入到对服务的引用中,并调用服务来执行实际工作。这个解决方案很好,可以工作,但我希望有一个更Scala-centric的解决方案。 - AnthonyFTransactional
声明可能会起作用。 - oxbow_lakes