Spring tx:scala中自动连线的注释驱动中断

Spring tx:scala中自动连线的注释驱动中断,spring,scala,autowired,Spring,Scala,Autowired,我使用的是spring+scala 2.8。我有一个@Transactional bean(标记为@Service),它在spring中通过启用,当我启动tomcat时,使用该服务bean进行@Autowired的控制器找不到Autowired候选者。当@Service对象明显地被实例化时(我可以通过log4j调试消息看到),我正在努力弄清楚为什么它找不到候选对象。我最终决定通过注释掉来简化,瞧!webapp启动良好 有人能提供一个技术上的原因来解释为什么这不起作用吗?我将尝试@Qualifie

我使用的是spring+scala 2.8。我有一个@Transactional bean(标记为@Service),它在spring中通过启用,当我启动tomcat时,使用该服务bean进行@Autowired的控制器找不到Autowired候选者。当@Service对象明显地被实例化时(我可以通过log4j调试消息看到),我正在努力弄清楚为什么它找不到候选对象。我最终决定通过注释掉来简化,瞧!webapp启动良好

有人能提供一个技术上的原因来解释为什么这不起作用吗?我将尝试@Qualifier,看看它是否“修复”了问题。

当您将
添加到配置中时,它会导致代理类发生各种包装(请参阅)。这可能与@Transactional注释和Scala不太匹配


请看

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

更新:我使用了@Qualifier,但它仍然找不到匹配的bean。你能提供一个简单的源代码示例来说明这个问题吗?我想你在代理方面做得对。我不确定您链接到的线程是否完全相关……因为我的事务bean是通过服务注释进行spring管理的。您必须研究Scala中的@transactional如何与tx:annotation-driven的实现交互。同样,一些示例源和应用程序上下文文件可能会有所帮助。