2

我在现有的 java + spring 项目中添加了一些 groovy 文件。
该项目正在运行(即通过测试)。

我在其中一种 gr​​oovy 方法中添加了“@Transactional”,测试失败了。
(为了添加@Transactional,我不得不将类上的注释从@Service 更改为@Controller,否则@Transactional 将被忽略——呸)。

我开始收到异常
异常各不相同

  1. @Autowired 没有找到任何东西 - NoSuchBeanDefinitionException
  2. 添加 @Qualifier("loadTransactions") 给了我同样的
  3. @Resource 给出了 BeanNotOfRequiredTypeException:名为 'loadTransactions' 的 Bean 必须是 [net.idt.workflow.LoadTransactions] 类型,但实际上是 [$Proxy33] 类型
    (我发现这是一个比我一直使用的 @Autowired 更好的错误消息: -( )

我将类型更改为“对象”并且@Resource 注入工作(我对@Autowired 有点恼火 - 所以我没有费心尝试使用 Object :-/ )

然后我使用了以下常规代码:
  loadTransactions.metaClass.object.process();
我觉得“臭”,但有效。

我的问题是:如何获得我期望的好代码,即
  loadTransactions.process();
我不应该知道@Transactional 正在使用一些代理

感谢您的帮助
Shalom Deitch

4

0 回答 0