name : bean object.
Я не нашел готовых способов получить ее, поэтому решил собирать ее из application context и класть ее в static final мапу:
for (String beanName : context.getBeanDefinitionNames()) {
springBeans.put(beanName, context.getBean(beanName));
}
Для этого мне нужен момент когда контекст уже полностью собран - я решил ловить ContextStartedEvent.
Т.е в итоге получилось вот так:
@EventListener
public void handleContextRefreshEvent(ContextStartedEvent event) {
ApplicationContext context = event.getApplicationContext();
for (String beanName : context.getBeanDefinitionNames()) {
springBeans.put(beanName, context.getBean(beanName));
}
}
Кто знает, это нормальный подход, или можно как то получше сделать?
и если это ок, то нормально ли в сервисе с "бизнес" логикой держать эту мапу и event listener, или лучше вынести в отдельное место?
а сама по себе аппликейшн контекс - это не такая мапа?
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-autowire An autowired Map instance’s values consist of all bean instances that match the expected type, and the Map instance’s keys contain the corresponding bean names. не то что нужно ?
внутри наверное мапа, но я не нашел методов как ее просто вытащить
делал так, всегда работало
Это просто <String, Object> заинжектить?
Обсуждают сегодня