tx:注释驱动在scala中打破@Autowired

时间:2011-04-01 19:15:58

标签: spring scala autowired

我正在使用spring + scala 2.8。我有一个@Transactional bean(用@Service标记),它在spring中通过< tx:annotation-driven />,当我启动tomcat时,使用此服务bean获取@Autowired的控制器无法找到autowire候选者。当@Service对象明显被实例化时,我正试图弄清楚为什么找不到候选对象(我可以通过log4j调试消息看到这个)。我最终决定通过评论<来简化。 tx:注释驱动/>,瞧! webapp很好。

有人能提供技术理由说明为什么这不起作用?我即将尝试@Qualifier来查看是否“修复了”这个问题。

2 个答案:

答案 0 :(得分:0)

<tx:annotation-driven/>添加到配置中时,会导致代理类发生各种包装(请参阅Spring documentation on transactions)。这可能不适合@Transactional注释和Scala。

请参阅Use Spring @Transactional in Scala

答案 1 :(得分:0)

所以我想出了我的问题。它实际上可能已经被java和scala“破坏”了。我的服务类只包含一个实现类,没有接口。一旦@Transactional代理了类spring就无法找到一个autowire候选者。只需添加界面(或scala中的特征)即可解决问题。