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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM