加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Spring-Boot:如何添加tomcat连接器以绑定到控制器

发布时间:2020-12-15 01:39:31 所属栏目:大数据 来源:网络整理
导读:在Spring-Boot文档中,有一节描述了如何为tomcat启用多个连接器(http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#howto-enable-multiple-connectors-in-tomcat). 但有没有办法简单地将连接器添加到现有连接器(Web和管理连接器)

在Spring-Boot文档中,有一节描述了如何为tomcat启用多个连接器(http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#howto-enable-multiple-connectors-in-tomcat).

但有没有办法简单地将连接器添加到现有连接器(Web和管理连接器)?并将它们绑定到一些mvc控制器?
我想要做的是创建一些可以在不同端口上访问的Web服务.

最佳答案
您可以为每个服务使用子应用程序,并通过设置其server.port属性将每个子节点配置为使用单独的端口.您想要隔离的任何组件都应该包含在其中一个子组件中.您要共享的任何组件都应该包含在父级中.

这是这种方法的一个例子.有两个子应用程序,一个侦听端口8080,另一个侦听端口8081.每个应用程序包含一个控制器,分别映射到/ one和/ 2.

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";
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读