我在现有的 java + spring 项目中添加了一些 groovy 文件。
该项目正在运行(即通过测试)。
我在其中一种 groovy 方法中添加了“@Transactional”,测试失败了。
(为了添加@Transactional,我不得不将类上的注释从@Service 更改为@Controller,否则@Transactional 将被忽略——呸)。
我开始收到异常
异常各不相同
- @Autowired 没有找到任何东西 - NoSuchBeanDefinitionException
- 添加 @Qualifier("loadTransactions") 给了我同样的
- @Resource 给出了 BeanNotOfRequiredTypeException:名为 'loadTransactions' 的 Bean 必须是 [net.idt.workflow.LoadTransactions] 类型,但实际上是 [$Proxy33] 类型
(我发现这是一个比我一直使用的 @Autowired 更好的错误消息: -( )
我将类型更改为“对象”并且@Resource 注入工作(我对@Autowired 有点恼火 - 所以我没有费心尝试使用 Object :-/ )
然后我使用了以下常规代码:
loadTransactions.metaClass.object.process();
我觉得“臭”,但有效。
我的问题是:如何获得我期望的好代码,即
loadTransactions.process();
我不应该知道@Transactional 正在使用一些代理
感谢您的帮助
Shalom Deitch