Внедрение компонента с помощью @Autowired, который реализует ApplicationListener, не работает? - PullRequest
3 голосов
/ 11 июля 2011

У меня есть служебный компонент (аннотированный @Service), который реализует интерфейс ApplicationListener для объектов событий типа T, расширяющих абстрактный класс ApplicationEvent.Вот довольно простой и понятный пример этого в документах Spring здесь

Однако, когда я пытаюсь внедрить этот бин в другие, используя @Autowired, я получаю:

org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден соответствующий компонент типа [...] для зависимости: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат для автоматического подключения для этой зависимости.Аннотация зависимости {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)}

Если я пытаюсь использовать что-то вроде @Resource, тогда я получаю исключение приведения класса (попытка ввестиресурс одного типа, но получающий прокси).

1 Ответ

5 голосов
/ 11 июля 2011

Если я пытаюсь использовать что-то вроде @Resource, я получаю исключение приведения класса (попытка внедрить ресурс одного типа, но получить прокси).

Это звучит как выпытаемся ссылаться на него по классу, в то время как он подключен как JDK-прокси на основе интерфейса.

Если у вас есть этот класс:

@Service
public class FooServiceImpl implements FooService{}

подключите его как:

@Autowired
private FooService fooService;

не как:

@Autowired
private FooServiceImpl fooService;

Ссылка:

...