在Spring-Boot文档中,有一节描述了如何为tomcat启用多个连接器(http://docs.spring.io/spring- boot/docs/1.1.7.RELEASE/reference/htmlsingle/#howto- 在tomcat中启用多个连接器)。
但是,有没有一种方法可以简单地将连接器添加到现有的连接器(Web和管理连接器)?并将它们绑定到某些MVC控制器?我要做的是创建一些可在不同端口上访问的Web服务。
您可以为每个服务使用子应用程序,并通过设置其server.port属性将每个子应用程序配置为使用单独的端口。您想要隔离的任何组件都应该放在其中一个子组件中。您要共享的任何组件都应放在父组件中。
server.port
这是此方法的示例。有两个子应用程序,一个监听端口8080,另一个监听端口8081。每个子应用程序都包含一个分别映射到/one和的控制器/two。
/one
/two
package com.example; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; public class Application { public static void main(String[] args) { SpringApplicationBuilder parentBuilder = new SpringApplicationBuilder(ApplicationConfiguration.class); parentBuilder.child(ServiceOneConfiguration.class) .properties("server.port:8080").run(args); parentBuilder.child(ServiceTwoConfiguration.class) .properties("server.port:8081").run(args); } @Configuration static class ApplicationConfiguration { @Bean public MySharedService sharedService() { return new MySharedService(); } } @Configuration @EnableAutoConfiguration static class ServiceOneConfiguration { @Bean public ControllerOne controller(MySharedService service) { return new ControllerOne(service); } } @Configuration @EnableAutoConfiguration static class ServiceTwoConfiguration { @Bean public ControllerTwo controller(MySharedService service) { return new ControllerTwo(service); } } @RequestMapping("/one") static class ControllerOne { private final MySharedService service; public ControllerOne(MySharedService service) { this.service = service; } @RequestMapping @ResponseBody public String getMessage() { return "ControllerOne says \"" + this.service.getMessage() + "\""; } } @RequestMapping("/two") static class ControllerTwo { private final MySharedService service; public ControllerTwo(MySharedService service) { this.service = service; } @RequestMapping @ResponseBody public String getMessage() { return "ControllerTwo says \"" + this.service.getMessage() + "\""; } } static class MySharedService { public String getMessage() { return "Hello"; } } }