2013-05-27 2 views
1

Я пытаюсь получить все бобы того же типа от FileSystemXmlApplicationContext.Весенний метод для получения всех бобов данного типа

Я использовал factory.getBeansOfType(SomeType.class), но я заметил, что он возвращает только компоненты верхнего уровня, есть ли какой-либо другой метод, который я могу использовать, который возвратит все бобы данного типа, даже вложенные бобы?

Пример использования:

<bean name="topLevelBean" class="SomeClass"> 
    <property name="someProperty"> 
     <bean bean="nestedBean" class="SomeClass"> 
    </property> 
</bean> 

Вызов factory.getBeansOfType(SomeClass.class) возвращается только topLevelBean но не nestedBean.

В документации getBeansOfType говорится, что он возвращает только фасоли верхнего уровня.

Мой вопрос: есть ли какой-либо метод, который возвращает все бобы нужного типа.

+5

что вы подразумеваете под верхним уровнем фасоли? –

+3

Это первый раз, когда я слышу о вложенных бобов. – AlexR

+1

Пожалуйста, добавьте ваш 'context.xml' и код Java, который вы используете. –

ответ

1

Я могу получить доступ ко всем компонентам, реализовав интерфейс BeanPostProcessor и добавив его в файл контекстного источника.

+0

Есть ли какая-либо аннотация для добавления на уровне класса вместо реализации BeanPostProcessor? –

0

Я не уверен, но возможно BeanFactoryUtils#beansOfTypeIncludingAncestors() может вернуть их (doc не говорит).

+0

Я попробовал, он возвращает тот же список, что и factory.getBeansOfType (у меня нет родительского контекста). – Razvi

+0

@Marcel Есть ли какие-либо аннотации, которые я могу добавить на уровне класса вместо использования BeanFactoryUtils? –