Класс Автопроводного соединения Spring по сравнению с интерфейсом?

У меня есть эта конфигурация Spring:

<bean id="boo" class="com.x.TheClass"/>

Класс TheClass реализации TheInterface. Тогда у меня есть этот (гипотетический) код Java:

@Autowired
TheInterface x;

@Autowired
TheClass y;

Автопроводное соединение TheInterface работы, но автопроводное соединение TheClass сбои. Spring дает мне a NoSuchBeanDefinitionException для класса.

Почему можно соединить проводом интерфейс а не класс?

42
задан Marcus Leon 5 March 2010 в 14:44
поделиться

1 ответ

Обычно работают оба, вы можете автоматически подключать интерфейсы или классы .

Вероятно, где-то в вашем контексте есть генератор автопрокси, который оборачивает ваш bean-компонент boo в сгенерированный прокси-объект. Этот прокси-объект будет реализовывать TheInterface , но не будет TheClass . При использовании автопроксимации вам нужно программировать интерфейс, а не реализацию.

Вероятный кандидат - транзакционные прокси - используете ли вы транзакции Spring, используя AspectJ или @Transactional ?

56
ответ дан 26 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: