Приложение Java Spring и Groovy с @Transactional - инъекция возвращает «прокси» вместо требуемого типа - PullRequest
2 голосов
/ 19 декабря 2011

Я добавил некоторые файлы groovy в существующий проект java + spring.
Проект работал (т.е. прошел тесты).

Я добавил "@Transactional" к одному из методов groovy итесты прервались.
(Чтобы добавить @Transactional, мне пришлось изменить аннотацию класса с @Service на @Controller, в противном случае @Transactional был проигнорирован - чёрт).

Я начал получать исключения
Различных исключений

  1. @ Autowired ничего не нашел - NoSuchBeanDefinitionException
  2. добавление @Qualifier ("loadTransactions") дало мне то же самое
  3. @ Resource дал BeanNotOfRequiredTypeException: бин с именем loadTransactions должен иметь тип[net.idt.workflow.LoadTransactions], но на самом деле было типа [$ Proxy33]
    (я считаю, что это лучшее сообщение об ошибке, чем @Autowired, которое я всегда использую :-()

Я изменилтип «Object» и инъекция @Resource работали (меня немного раздражает @Autowired - поэтому я не стал пробовать это с Object: - /)

Затем я использовал следующий классный код:
loadTransactions.metaClass.object.process ();
, который, я чувствую, «воняет», но РАБОТАЕТ.

У меня такой вопрос: как получить красивый код, который я ожидал, например
loadTransactions.process ();
Мне не нужно было знать, что @Transactional использует какой-то прокси

Спасибо за вашhelp
Shalom Deitch

...