Получение ошибки Spring «Bean с именем 'x' должен быть типа [y], но на самом деле имел тип [$ Proxy] »в Jenkins

Я уже некоторое время отлаживаю это и надеюсь, что кто-нибудь сможет пролить здесь свет.

У меня есть проект Maven, добавленный в Jenkins с использованием JDK 1.6. В этом проекте я использую АОП для обработки транзакции базы данных.

Когда я запускаю сборку в Jenkins, мой тестовый сценарий завершается неудачно со следующими исключениями: -

Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'dataHandlerClassificationImpl': 
Injection of resource dependencies failed; nested exception is 
org.springframework.beans.factory.BeanNotOfRequiredTypeException: 
Bean named 'writerDataLocationImpl' must be of type [xxx.script.WriterData], 
but was actually of type [$Proxy17]
    ...
    ...
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: 
Bean named 'writerDataLocationImpl' must be of type [xxx.script.WriterData], 
but was actually of type [$Proxy17]
    ...
    ...

Класс DataHandlerClassificationImpl выглядит примерно так: -

@Service
public class DataHandlerClassificationImpl extends DataHandler {

    @Resource(name="writerDataLocationImpl")
    private WriterData writerData;

    ...
}       

WriterData - это интерфейс с несколькими реализации.

Я могу без проблем выполнить код из IDE. Чтобы определить, является ли это проблемой Maven или проблемой Jenkins, я перешел в папку заданий проекта Jenkins с помощью командной строки и смог без ошибок запустить mvn test .

Я знаю, что ошибка прокси имеет какое-то отношение к AOP, и что я могу автоматически подключаться к интерфейсу, а не к конкретному классу ... но это не так, поскольку я могу нормально запускать свой код вне Jenkins .

Есть идеи? Спасибо.

19
задан limc 5 December 2011 в 21:12
поделиться