SpringBoot入门(十二)

简介: SpringBoot入门(十二)


SpringBoot的定制和优化内嵌的Tomcat

在一台机器上想要部署多个boot应用的话:启动web项目的时候默认占用的端口是8080端口,但是不想用这个端口的话,这时就可以去定制它:

1、通过属性的配置文件来配置:在源代码中有一个服务的配置文件:ServerProperties,它的前缀是以server开始的。可以指定http的端口,可以绑定它的ip地址,可以指定错误的信息的配置,还可以指定header,ssl,tomcat,jetty,http2等等。


例如改下端口号和绑定ip地址如下:

现在再次运行项目的话:所以绑定的时候只能固定这个地址访问了。

注意:在属性的配置文件里面配置不了tomcat的协议,比如tomcat默认是使用bio的协议的,但是我想要配置nio的话在配置文件里面是配置不了的,通过下面的方式是可以的。

2、实现WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>,代码如下:

  1. package com.boot.tomcat.demo.boottomcat.config;
  2. import org.springframework.boot.web.server.WebServerFactoryCustomizer;
  3. import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. public class TomcatConfiguration implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
  7.    @Override
  8.    public void customize(ConfigurableServletWebServerFactory factory) {
  9.        System.out.println("-------------------");
  10.    }
  11. }

当运行项目的时候:会把customize这个方法给自动执行了。

然后可以在这个方法里面设置http请求的端口和访问项目的上下文路径,代码如下:

  1. package com.boot.tomcat.demo.boottomcat.config;
  2. import org.springframework.boot.web.server.WebServerFactoryCustomizer;
  3. import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. public class TomcatConfiguration implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
  7.    @Override
  8.    public void customize(ConfigurableServletWebServerFactory factory) {
  9.        System.out.println("-------------------");
  10.        factory.setContextPath("/demo");
  11.        factory.setPort(8090);
  12.    }
  13. }

启动下项目:这种配置的优先级会比在配置文件的优先级要高一些。

一般在这个配置文件里配置了就不会在属性配置文件里再配置了tomcat的优化了。

如果想要设定协议的话,需要绑定TomcatServletWebServerFactory,代码如下,在这个里面还可以创建连接器,连接器的默认的端口是8443。

  1. package com.boot.tomcat.demo.boottomcat.config;
  2. import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
  3. import org.springframework.boot.web.server.WebServerFactoryCustomizer;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. public class TomcatConfiguration implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
  7.    @Override
  8.    public void customize(TomcatServletWebServerFactory factory) {
  9.         factory.setContextPath("/demo");
  10.         factory.setPort(8090);
  11.         //这个是设置nio的协议
  12.         factory.setProtocol("org.apache.coyote.http11.Http11NioProtocol");
  13.    }
  14. }

然后看下源代码:

这个AbstractServletWebServerFactory类里面还可以支持两个服务器的除了Tomcat服务器。就是说除了用tomcat启动项目还可以使用jetty服务器的方式去启动项目,这三个服务器都是web的服务器。Boot只是内置了tomcat的服务器。

jetty的服务器要比tomcat处理的并发能力要高很多。

总结:上面是一些关于内置tomcat的一些简单的配置和优化,后面会详细写tomcat的优化。

相关文章
|
4月前
|
Java 关系型数据库 数据库连接
【SpringBoot】入门到精通 这一篇就够了
【SpringBoot】入门到精通 这一篇就够了
118 1
|
13小时前
|
Java 应用服务中间件 Spring
SpringBoot入门(十一)
SpringBoot入门(十一)
SpringBoot入门(十一)
|
13小时前
|
Dubbo NoSQL Java
SpringBoot入门(十四)
SpringBoot入门(十四)
|
Java 调度 Spring
SpringBoot与任务(十一)
SpringBoot与任务(十一)
96 0
SpringBoot与任务(十一)
|
SQL XML Java
14、SpringBoot2.0基本使用笔记(十四)
第一种启动方式:直接用编辑器启动 第二种启动方式:mvn spring_boot run 第三种启动方式: mvn install (先编译项目,targe 生成 jar) java -jar project.jar 后两种启动方式都需先进入到项目目录上再运行命令。
173 0
|
Java 应用服务中间件 Maven
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
224 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
|
JSON Java 应用服务中间件
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
171 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
|
druid Java 关系型数据库
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
485 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
|
NoSQL Java 数据库连接
SpringBoot入门,这一篇就够了(四)
SpringBoot入门,这一篇就够了
SpringBoot入门,这一篇就够了(四)
|
XML Java 数据库连接
SpringBoot入门,这一篇就够了(一)
SpringBoot入门,这一篇就够了
SpringBoot入门,这一篇就够了(一)