我的api网关服务中有控制器:
@GetMapping("/test")
我的一条路线中有相同的端点。
当我调用/ test时,我的请求被路由了,我该如何增加Spring Controller的优先级而不是zuul路由?
答案 0 :(得分:0)
您可以使用路径前面的前进向控制器添加路由,例如:
zuul:
routes:
controller:
path: /test
url: forward:/test
other:
...
并将其放在其他路由定义之前,如果使用YAML文件,它将保留订单。
我还没有测试上面的示例,但是我使用了类似的解决方案,并且效果很好。
答案 1 :(得分:0)
您可以使用 BeanPostProcessor 来减少 ZuulHandlerMapping 的顺序。默认为 -200
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Bean
public ZuulBeanPostProcessor postBean() {
return new ZuulBeanPostProcessor();
}
public static class ZuulBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof ZuulHandlerMapping) {
((ZuulHandlerMapping) bean).setOrder(10);
}
return bean;
}
}
}