Spring引导:在映射级别指定端口
Spring Boot: specify port at the mapping level
Spring 引导:我想实现以下目标:一些 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 取得了部分成功,但如果可能的话,能够在控制器内部实现它会很好。
可能吗?
您尝试执行的操作意味着该应用程序正在侦听多个端口。这反过来意味着您启动多个 tomcat,因为 spring-boot 包一个容器在一个端口上启动。
你能做什么
您可以使用不同的 spring 配置文件启动同一个应用程序两次。每个配置文件将配置不同的端口。
2 个属性:
申请-one.properties:server.port=8080
申请-two.properties:server.port=8081
2 个控制器
@Profile("one")
public class Controller1 {
@RequestMapping(value="/path1") public...
}
@Profile("two")
public class Controller2 {
@RequestMapping(value="/path2") public...
}
每个控制器在提供指定的 spring 配置文件时激活。
启动两次
$ java -jar -Dspring.profiles.active=one YourApp.jar
$ java -jar -Dspring.profiles.active=two YourApp.jar
虽然无法阻止调用不需要的端口,但可以在控制器方法的其他参数中指定HttpServletRequest
,然后使用HttpServletRequest.getLocalPort()
获取调用的端口在。
然后您可以手动 return 如果请求是在错误的端口上发出的 HTTP 错误代码,或者转发到另一个控制器,如果设计必须对不同端口上的相同路径进行不同的处理。
Spring 引导:我想实现以下目标:一些 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 取得了部分成功,但如果可能的话,能够在控制器内部实现它会很好。
可能吗?
您尝试执行的操作意味着该应用程序正在侦听多个端口。这反过来意味着您启动多个 tomcat,因为 spring-boot 包一个容器在一个端口上启动。
你能做什么
您可以使用不同的 spring 配置文件启动同一个应用程序两次。每个配置文件将配置不同的端口。
2 个属性:
申请-one.properties:server.port=8080
申请-two.properties:server.port=8081
2 个控制器
@Profile("one")
public class Controller1 {
@RequestMapping(value="/path1") public...
}
@Profile("two")
public class Controller2 {
@RequestMapping(value="/path2") public...
}
每个控制器在提供指定的 spring 配置文件时激活。
启动两次
$ java -jar -Dspring.profiles.active=one YourApp.jar
$ java -jar -Dspring.profiles.active=two YourApp.jar
虽然无法阻止调用不需要的端口,但可以在控制器方法的其他参数中指定HttpServletRequest
,然后使用HttpServletRequest.getLocalPort()
获取调用的端口在。
然后您可以手动 return 如果请求是在错误的端口上发出的 HTTP 错误代码,或者转发到另一个控制器,如果设计必须对不同端口上的相同路径进行不同的处理。