设为首页 加入收藏

TOP

SpringBoot集成Tomcat服务(一)
2023-07-25 21:42:53 】 浏览:60
Tags:SpringBoot 集成 Tomcat 服务

使用的成本越低,内部封装越复杂;

一、Tomcat集成

1、依赖层级

在SpringBoot框架的web依赖包中,引入的是内嵌Tomcat组件,基于SpringBoot的版本,Tomcat集成的是9.0版本;

<!-- 1、项目工程依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

<!-- 2、starter-web依赖 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <version>2.2.5.RELEASE</version>
  <scope>compile</scope>
</dependency>

<!-- 3、starter-tomcat依赖 -->
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-core</artifactId>
  <version>9.0.31</version>
  <scope>compile</scope>
</dependency>

2、自动化配置

在SpringBoot框架的自动配置类中,Web项目中不显式更换其他服务依赖时,默认提供了对Tomcat服务的管理;

@ConditionalOnWebApplication(type = Type.SERVLET)
@EnableConfigurationProperties(ServerProperties.class)
@Import({ ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class,
		ServletWebServerFactoryConfiguration.EmbeddedTomcat.class})
public class ServletWebServerFactoryAutoConfiguration {

	@Bean
	@ConditionalOnClass(name = "org.apache.catalina.startup.Tomcat")
	public TomcatServletWebServerFactoryCustomizer tomcatServletWebServerFactoryCustomizer(
			ServerProperties serverProperties) {
		return new TomcatServletWebServerFactoryCustomizer(serverProperties);
	}
}

二、Tomcat架构

Server:代表整个Tomcat容器;

Service:服务器内部的中间组件,将一个或多个Connector绑定到一个Engine上;

Engine:表示特定服务的请求处理管道,接收Connector的请求并响应;

Host:网络主机名称;

Connector:连接器处理与客户端的通信;

Context:代表一个Web应用程序的上下文;

参考Tomcat9.0版本的核心组件描述,对于框架有大致的了解后,再去分析集成原理,会更容易把握主线逻辑;

三、Tomcat配置

1、基础配置

在配置文件中,对Tomcat做一些基础性的设置,查看下面的配置类可以知道,这些属性存在默认值;

server:
  port: 8082                # 端口号
  tomcat:                   # Tomcat组件
    uri-encoding: UTF-8     # URI编码
    max-threads: 100        # 最大工作线程
    min-spare-threads: 10   # 最小工作线程

2、属性配置类

在服务配置中,提供多种服务器的适配,像Tomcat、Jetty、Netty、Undertow,从策略上看,配置分为公共属性以及各种服务器的适配属性;

更多配置信息,可以参考完整的源码和注释说明;

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
public class ServerProperties {
    private Integer port;
    public static class Tomcat {
        private Charset uriEncoding = StandardCharsets.UTF_8;
        private int maxThreads = 200;
        private int minSpareThreads = 10;
    }
}

3、配置加载分析

  • 基于配置的属性,定制化管理Tomcat服务的信息;
public class TomcatWebServerFactoryCustomizer
        implements WebServerFactoryCustomizer<ConfigurableTomcatWebServerFactory> {
    @Override
    public void customize(ConfigurableTomcatWebServerFactory factory) {
        ServerProperties properties = this.serverProperties;
        ServerProperties.Tomcat tomcatProperties = properties.getTomcat();
        PropertyMapper propertyMapper = PropertyMapper.get();
        customizeStaticResources(factory);
    }
}
  • TomcatWeb服务工厂,这里在创建WebServer时,使用的是Tomcat,需要适当的了解一下Tomcat架构;
public class TomcatServletWebServerFactory extends AbstractServletWebServerFactory
        impl
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring Boot Hello World 基于 ID.. 下一篇【项目实战】从零到一搭建Spring ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目