я весна приложения загрузки, Там уже создание боба в одном классе авто configuraton с зависимой баночкой, как ниже:Как заменить существующий bean-компонент в приложении весенней загрузки?
@Bean
@Order(100)
public StaticRouteLocator staticRouteLocator(AdminServerProperties admin) {
Collection<ZuulRoute> routes = Collections
.singleton(new ZuulRoute(admin.getContextPath() + "/api/turbine/stream/**",
properties.getUrl().toString()));
return new StaticRouteLocator(routes, server.getServletPrefix(), zuulProperties);
}
Теперь я хочу, чтобы заменить этот компонент, но мне еще нужна эта банка, который имеет этот нежелательный Bean создание. Поэтому я добавил еще один метод создания фасоли в моем главном классе авто конфигурации, как это:
@Bean(name="patchedStaticRouteLocator")
@Order(10)
@Primary
@ConditionalOnMissingBean
public StaticRouteLocator patchedStaticRouteLocator(AdminServerProperties admin) {
Collection<ZuulProperties.ZuulRoute> routes = Collections
.singleton(new ZuulProperties.ZuulRoute(admin.getContextPath(),
properties.getUrl().toString()));
return new StaticRouteLocator(routes, server.getServletPrefix(), zuulProperties);
}
Но это не смогло заменить целевой компонент. Тзд ошибка ясно и легко понять:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.cloud.netflix.zuul.filters.RouteLocator] is defined: more than one 'primary' bean found among candidates: [routeLocator, patchedStaticRouteLocator, staticRouteLocator, compositeRouteLocator, applicationRouteLocator]
Мой вопрос, что это правильный способ заменить такой существующий боб весной ботинке? Заранее спасибо.
Спасибо за выше инструкции, которые излечение некоторые из моих неурядиц, хотя это решение не работало, как ожидалось. Однако я сделал это, выполнив компонент «BeanPostProcessor». – leo
Добро пожаловать. Тем не менее приятно, что вы нашли рабочее решение. –