如何在不同的端口上 运行 @RestController?

How to run @RestController on a different port?

我正在使用 spring-rest 创建一些 @RestController servlet。该应用程序不是 运行 在网络服务器上,而是作为一个简单的命令行工具,带有嵌入式 tomcat.

其中大部分应该 运行 连接在 public 端口上,该端口使用 server.port=80 属性.

指定

问题:如何在不同端口上 运行 不同 @RestController?所以其中一些只能在内部访问?

@RestController 
@RequestMapping("test")
public class TestServlet {

    @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public String test() { return "OK"; }
}

我建议使用代理。它可以是 Apache Web 服务器或 Ngix。您需要在网络服务器中配置两个虚拟主机(在不同的端口)。并将调用重定向到您的 tomcat 服务器。你可以在不同的路径加载你的控制器,这样它会更容易代理来自 weberver 的调用。

最终您的客户端通过 Web 服务器进行调用,而不是直接向 tomcat。

如果您正在 Spring 启动,我认为您应该查看 Spring Boot Actuator。您的应用程序可以设置到一个端口,而执行器从另一个端口运行。

这是一个说明如何更改执行器端口的指南 - https://spring.io/guides/gs/actuator-service/