Получить бин (программно зарегистрированный) из контекста Spring? - PullRequest
0 голосов
/ 04 декабря 2018

Я зарегистрировал бин программно:

@Autowired
private GenericApplicationContext applicationContext;

[...]

applicationContext.registerBean("a0", A.class, () -> new A(0));

// make sure to set up the bean
applicationContext.getBean("a0");

Когда я хочу получить этот бин по имени, он работает и всегда возвращает один и тот же экземпляр:

applicationContext.getBean("a0");

Но когда я хочучтобы получить все bean-компоненты типа A.class, он возвращает en empty Map:

Map<String, A> as = applicationContext.getBeansOfType(A.class);

as = [] !!!

Я работаю со Spring 5.0, почему Spring считаету меня нет компонента типа A в моем контексте, пока я не могу получить их по имени?

1 Ответ

0 голосов
/ 04 декабря 2018

Используйте взамен BeanFactoryUtils.beansOfTypeIncключAncestors :

BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, A.class)

См. Ответ форума Spring :

Не учитывает эту иерархиюМожет участвовать фабрика. Используйте BeanFactoryUtils's beansOfTypeInclusionAncestors для включения bean-компонентов и в фабрики предков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...