JHipster7项目中如何正确使用Spring的RouterFunction?
JHipster 7 中RouterFunction无法生效问题解决方案
JHipster 7 默认生成的Web项目默认存在依赖和配置冲突,Spring MVC默认会忽略RouterFunction类型Bean的注册,具体可按以下顺序排查解决:
- 方案1:启用Spring MVC对RouterFunction的兼容支持
在application.yml配置文件中添加如下配置:
该配置会让Spring同时识别MVC的spring: webflux: detect-all-handler-mappings: true@Controller和WebFlux的RouterFunction映射规则。 - 方案2:显式注册RouterFunction的处理器映射
新增配置类手动注入RouterFunctionMappingBean,设置优先级高于默认MVC映射即可:@Configuration public class RouterFunctionConfig { @Bean public RouterFunctionMapping routerFunctionMapping(List<RouterFunction<?>> routerFunctions) { RouterFunctionMapping mapping = new RouterFunctionMapping(); mapping.setRouterFunctions(routerFunctions); mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1); return mapping; } } - 方案3:排查全局路径前缀配置
JHipster默认会给所有服务端接口添加/api前缀,若你的RouterFunction定义的路径没有包含此前缀,会被全局前缀拦截器过滤,可选择修改RouterFunction路径匹配规则或者在配置中调整全局前缀:jhipster: web: api: prefix: "" # 清空默认前缀,或自行调整为你需要的前缀 - 额外排查点:若项目还有残留的Spring Security配置,
POST/PUT/DELETE类型的RouterFunction接口会被默认CSRF校验拦截,可在Security配置类中给对应路径添加CSRF豁免规则即可。
内容的提问来源于stack exchange,提问作者yuvytung
相关产品推荐
相关产品推荐

