一尘不染

Spring Boot:在映射级别指定端口

spring-boot

Spring Boot:我想实现以下目标:一些URL路径映射到一个端口,另一些映射到另一个。

换句话说,我想要类似的东西:

public class Controller1 {
  @RequestMapping(value="/path1", port="8080") public...
  @RequestMapping(value="/path2", port="8081") public...
}

这样我的应用才能响应localhost:8080 / path1和localhost:8081 / path2

在应用内可以有2个独立的控制器。

通过为tomcat实现EmbeddedServletContainerCustomizer,我已经成功地取得了部分成功,但如果可能的话,能够在控制器内实现此目标也将是一件不错的事情。

可能吗?


阅读 379

收藏
2020-05-30

共1个答案

一尘不染

虽然您不能阻止在不需要的端口上进行调用,但是您可以HttpServletRequest在控制器方法的其他参数中进行指定,然后用于HttpServletRequest.getLocalPort()获取在其上进行调用的端口。

然后,如果请求是在错误的端口上发出的,您可以手动返回HTTP错误代码;如果设计是这样的,那么必须对不同端口上的相同路径进行不同的处理,则可以将HTTP错误代码转发给另一个控制器。

2020-05-30