1

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

有人可以提供为什么这不起作用的技术原因吗?我将尝试@Qualifier 看看是否“解决”了问题。

4

2 回答 2

0

当您添加<tx:annotation-driven/>到您的配置时,它会导致代理类发生各种包装(请参阅有关事务的 Spring 文档)。这可能不适用于 @Transactional 注释和 Scala。

请参阅在 Scala 中使用 Spring @Transactional

于 2011-04-02T01:30:53.240 回答
0

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

于 2011-04-04T14:10:00.777 回答