2015-05-22 5 views
1

У меня есть Spring application.xml (У меня есть много XML в Blueprint контексте)запроса Всех Бобов контекста приложения

<bean name="bean1"> 
    <property name="list"> 
    <list> 
     <bean class="com.jrey.xx.A"></bean> 
     <bean class="com.jrey.xx.C"></bean> 
    </list> 
    </property> 
<bean name="bean2"> 
    <property name="list"> 
    <list> 
     <bean class="com.jrey.xx.A"></bean> 
     <bean class="com.jrey.xx.B"></bean> 
    </list> 
</property> 

с помощью метода getBeanDefinitionNames я могу получить бобы bean1, bean2 но я не может получить элементы списка, я хочу также просмотреть эти компоненты.

for (String beanName : applicationContext.getBeanDefinitionNames()) { 
    //I have a control 
} 

Какой способ получить все бобы контекста приложения, которые включают бобы, которые не имеют названия и фасолью пункты списка.

+1

Какая у вас весенняя версия? –

+1

Вы пробовали 'applicationContext.getBeansOfType (Object.class)'? Он возвращает карту всех бобов, которые являются типом объекта. Он также инициализирует их, поэтому использование этого просто так, возможно, приведет к ошибкам – Dalton

+0

getBeansOfType не показывает мне все бобы. Теперь я проверил его. Спасибо – jrey

ответ

2

Вы не можете. Если вы хотите иметь возможность ссылаться на эти компоненты, объявите их с именем на верхнем уровне конфигурации XML и ссылайтесь на них в пределах <list>.

<bean name="A1" class="com.jrey.xx.A" /> 
<bean name="bean2"> 
    <property name="list"> 
    <list> 
     <ref bean="A1" /> 
    </list> 
    </property> 
</bean> 
+0

Спасибо, я хочу сделать еще более общий. У вас есть идея добавить к моим бобам некоторый прокси-перехватчик. – jrey

+0

Что вы подразумеваете под _proxy interceptor_? –

+0

Каждый bean-компонент может быть сервисом с аннотацией @CustomAcl И я должен проверить, может ли поток выполнить этот метод. Я хочу сделать некоторые общие ... для всех банок моего проекта. (другой человек может добавить больше банок) – jrey

Смежные вопросы