Разве Spring вообще не поддерживает внедрение интерфейса? - PullRequest
6 голосов
/ 13 мая 2010

Я знаю, что Spring не поддерживает внедрение интерфейса, и я читал это много раз.

Но сегодня, когда я наткнулся на статью об IOC, написанную Мартином Фаулером ( ссылка ), кажется, что использование ApplicationContextAware в Spring похоже на внедрение интерфейса.

когда в нашем bean-компоненте Spring всегда требуется контекстная ссылка Spring, мы реализуем ApplicationContextAware и реализуем метод setApplicationContext (контекст ApplicationContext), а также включаем bean-компонент в файл конфигурации. Разве это не то же самое, что инъекция в интерфейс, где, где указание Spring вводить (или), скажем, передать ссылку на контекст в этот bean-компонент?

Или я что-то здесь упускаю? Спасибо за любую информацию!

ManiKanta

1 Ответ

6 голосов
/ 13 мая 2010

Если вы имеете в виду внедрение интерфейса , как определено в википедии , Spring поддерживает его из коробки для ResourceLoaders, ApplicationContexts, MessageSource и других, с интерфейсами ResourceLoaderAware , ApplicationContextAware , MessageSourceAware соответственно.

Также возможно расширить этот механизм новыми интерфейсами и зависимостями, зарегистрировав BeanPostProcessor .

Справочное руководство Spring объясняет эту возможность (и когда ее следует (не) использовать) довольно четко. Кстати, я обнаружил, что весеннее справочное руководство гораздо надежнее, чем то, что говорит «кто-то в интернете».

...