zoukankan      html  css  js  c++  java
  • SpringBoot修改默认端口号,session超时时间

    有时候我们可能需要启动不止一个SpringBoot,而SpringBoot默认的端口号是8080,所以这时候我们就需要修改SpringBoot的默认端口了。修改SpringBoot的默认端口有两种方式。下面就分别说一下这两种方式。

    修改application.properties

    第一种方式我们只需要在application.properties中加这样的一句话就可以了:server.port=8004。为什么这种方式可以实现修改SpringBoot的默认端口呢?因为在SpringBoot中有这样的一个类:ServerProperties。我们可以大致看一下这个类:

    [java] view plain copy
    1. @ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)  
    2. public class ServerProperties  
    3.         implements EmbeddedServletContainerCustomizer, EnvironmentAware, Ordered {  
    4.   
    5.     /** 
    6.      * Server HTTP port. 
    7.      */  
    8.     private Integer port;  

    在这个类里有一个@ConfigurationProperties注解,这个注解会读取SpringBoot的默认配置文件application.properties的值注入到bean里。这里定义了一个server的前缀和一个port字段,所以在SpringBoot启动的时候会从application.properties读取到server.port的值。我们接着往下看一下:

    [java] view plain copy
    1. @Override  
    2. public void customize(ConfigurableEmbeddedServletContainer container) {  
    3.     if (getPort() != null) {  
    4.         container.setPort(getPort());  
    5.     }  

    这里有一个customize的方法,这个方法里会给SpringBoot设置读取到的端口号。

    实现EmbeddedServletContainerCustomizer

    我们在上面看到了端口号是在customize这个方法中设置的,而这个方法是在EmbeddedServletContainerCustomizer这个接口中的,所以我们可以实现这个接口,来更改SpringBoot的默认端口号。具体代码如下:
    [java] view plain copy
    1. @RestController  
    2. @EnableAutoConfiguration  
    3. @ComponentScan  
    4. public class FirstExample implements EmbeddedServletContainerCustomizer {  
    5.   
    6.     @RequestMapping("/first.do")  
    7.     String home() {  
    8.         return "Hello World!世界你好";  
    9.     }  
    10.   
    11.     public static void main(String[] args) {  
    12.   
    13.         SpringApplication.run(FirstExample.class, args);  
    14.     }  
    15.   
    16.     @Override  
    17.     public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {  
    18.   
    19.         configurableEmbeddedServletContainer.setPort(8003);  
    20.     }  
    21. }  
    然后你在启动SpringBoot的时候,发现端口号被改成了8003.

    springboot中默认可以通过配置如下参数设置内嵌容器Tomcat的端口,最大线程数等等

    server.port=8081
    server.tomcat.max-threads=1000

    但是,无法设置最大连接数,而最大连接数直接影响到Tomcat的性能,如何调整这个最大连接数呢?

    import org.apache.catalina.connector.Connector;
    import org.apache.coyote.http11.Http11NioProtocol;
    import org.springframework.boot.context.embedded.EmbeddedServletContainer;
    import org.springframework.boot.context.embedded.ServletContextInitializer;
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
    import org.springframework.stereotype.Component;

    @Component()
    public class MyEmbeddedServletContainerFactory extends TomcatEmbeddedServletContainerFactory
    {
    public EmbeddedServletContainer getEmbeddedServletContainer(ServletContextInitializer... initializers)
    {
    //设置端口
    this.setPort(8081);
    return super.getEmbeddedServletContainer(initializers);
    }

    protected void customizeConnector(Connector connector)
    {
    super.customizeConnector(connector);
    Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler();
    //设置最大连接数
    protocol.setMaxConnections(2000);
    //设置最大线程数
    protocol.setMaxThreads(2000);
    protocol.setConnectionTimeout(30000);
    }
    }

    ??最大连接数和最大线程数区别??


    使用命令行参数

    如果你只是想在启动的时候修改一次端口号的话,可以用命令行参数来修改端口号。配置如下:java -jar 打包之后的SpringBoot.jar  --server.port=8000

    使用虚拟机参数

    你同样也可以把修改端口号的配置放到JVM参数里。配置如下:-Dserver.port=8009。 这样启动的端口号就被修改为8009了。

    设置超时时间 

    在启动类中

    @Bean
    private EmbeddedServletContainerCustomizer containerCustomizer(){
    return new EmbeddedServletContainerCustomizer() {
    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
    container.setSessionTimeout(1800);//单位为S
    }
    };
    }
  • 相关阅读:
    遗传算法(Genetic Algorithm, GA)及MATLAB实现
    CCF CSP 201809-2 买菜
    PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
    PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
    PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
    PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
    PAT (Advanced Level) Practice 1001 A+B Format (20 分)
    BP神经网络(原理及MATLAB实现)
    问题 1676: 算法2-8~2-11:链表的基本操作
    问题 1744: 畅通工程 (并查集)
  • 原文地址:https://www.cnblogs.com/xingzc/p/7896879.html
Copyright © 2011-2022 走看看