Springboot在tomcat下启动

【SpringBoot系列】Spring Boot 中tomcat的启动 好久没写了,今天继续,虽然类似的文章在网上也能搜到,但是还是自己记录下,也是实际的去探索下,说一下自己的方法上面堆栈的第4个,也就是run:307 堆栈,看到如下代码这里可以看到根据不同的webApplicationType 会创建不同的web服务器这里的问题是webApplicationType 是怎么赋值的呐?直接搜索,可以看到构造函数的时候进行赋值的点进去看实现,是一个静态的函数,是根据当前路径下的类判断,返回是REACTIVE 还是Servlet。 阅读详情

tomcat下启动配置方法

有时候小项目并不像每次在服务器都用命令启动,偷个懒难道就不能用在tomcat下跑起来么,当然是可以的,其实只需启动类继承SpringBootServletInitializer

启动类继承SpringBootServletInitializer

@RestController
@SpringBootApplication
//mapper 接口类扫描包配置
@MapperScan("com.zjcjava.modulesapi.*.dao")
public class Application  extends SpringBootServletInitializer {//启动类继承SpringBootServletInitializer




    /*********
     * index入口
     * @return
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    @ResponseBody
    Object index ( ) {

        return "<h1>web-api project @ zjcjava 2018</h1>";
    }


    //启动main方法
    public static void main(String[] args)  {//throws Exception
        SpringApplication.run(Application.class, args);
    }



}

pom引入tomcat下运行需要的jar

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zjcjava</groupId>
    <artifactId>web-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- 部署到tomcat中需要使用 -->
    <packaging>war</packaging>


    <name>xm-web-api</name>
    <url>http://maven.apache.org</url>

    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <properties>
        <mybatis-spring-boot>1.2.0</mybatis-spring-boot>
        <mysql-connector>5.1.39</mysql-connector>
    </properties>

    <dependencies>

        <!-- Spring Boot Web 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring Boot Test 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Spring Boot Mybatis 依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis-spring-boot}</version>
        </dependency>

        <!-- MySQL 连接驱动依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector}</version>
        </dependency>


        <!-- Junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>


        <!-- 部署到tomcat中需要使用 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>



    </dependencies>



    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <skipTests>true</skipTests>
                    <!-- 打成war包时名子 -->
                    <warName>web-api</warName>
                    <!-- mave时启用的main路径(因为其他包里面测试时也加了main函数) -->
                    <mainClass>${start-class}</mainClass>
                    <skip>true</skip><!-- 跳过测试 -->
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

说下注意点

  1. 打包的类型需要改成war
  2. 加入spring-boot-starter-tomcat需要的jar
  3. build编译时可以修改编译打包的项目名称,如果修改可以注释掉,但是我们在文本中访问的时候就必须以打包的文件名为根目录访问

maven打包

pom.xml右键Run as ->maven install
把编译打包后的文件(target文件夹下)
web-api.war
丢到tomcat下面,启动tomcat

我这里的项目访问路径如下,如果你不重名则直接是打包文件的文件名作为根目录
localhost:8080/web-api

这里写图片描述

从Springboot 看 Tomcat 启动 所以这里可以看出来,启动 server 就是启动 service ,启动 service 里又启动了 engine ,启动 engine 就是启动每个子容器,子容器再递归启动子容器的子容器。就这样engine 启动了 host , host 启动 context ,context 启动 wrapper,这些容器都有一个 startInternal 方法,用来做容器自身的准备以及启动子容器。搞懂每个 startInternal 方法里面做的事情,才能真正理解 tomcat 启动原理! 阅读详情

相关推荐

matlab/simulink saw谐振器仿真,基于Matlab的SAW模态耦合模型的仿真研究

第32卷 第 4 期Vol. 32 No. 4重 庆 理 工 大 学 学 报 (自然科学)Journal of Chongqing University of Technology( Natural Science)2 0 1 8年 4 月Apr. 2018doi : 10.3969/j . issn. 1674-8425(z). 2018.04.002本文引用格式 :李志鹏,马龙祥,孟旭,等•基...

weixin_36192634的博客 1385

SpringBoot内嵌的Tomcat启动过程以及请求

项目会先初始化NioEnpoint实现类父类,AbstractProtocol.init()初始化,在这里打个Debugger。SpringBoot内嵌的Tomcat启动过程以及请求

Benjamin 2289

Lumerical官方案例、FDTD时域有限差分法仿真学习(十四)——超透镜(Metalens)

这个例子的目的是设计一个由圆柱形纳米棒组成的衍射超透镜。 纳米棒的半径和排列经过调整以在超透镜表面上产生所需的相位分布。 该设计通过近场和远场分析在 Ansys FDTD、RCWA(严格耦合波分析)和 OpticStudio 中得到验证。...

weixin_45719141的博客 3万+

SpringBoot如何启动tomcat

SpringBoot如何启动tomcat

weixin_44778850的博客 843

为什么你的Nginx配置SM2国密SSL证书失败?这些坑我都帮你踩过了

本文针对Nginx配置SM2国密SSL证书的常见失败原因,提供了详细的排查与解决方案。核心在于使用支持国密算法的Nginx版本(如集成Tongsuo库),正确处理从阿里云等平台获取的证书格式,并正确配置ssl_ciphers等关键参数。文章还解释了浏览器兼容性差异及双证书部署等进阶场景,帮助运维和开发人员高效完成国密合规改造。

weixin_29228203的博客 385

从 Open SQL JOIN 走向 ABAP CDS Association:把查询写成可复用的数据模型

摘要: 本文通过飞行模型示例,对比了ABAP中三种表关联实现方式:Open SQL JOIN、CDS显式JOIN和CDS Association。重点解析了Association的本质是将表关系声明为数据模型语言,使用时通过路径表达式按需展开为JOIN。文章指出路径表达式在不同位置会默认展开为不同JOIN类型(如SELECT列表默认为LEFT OUTER),并演示了如何用[inner]强制指定INNER JOIN。最后结合S/4HANA实际案例,说明Association通过中心化关系定义和路径复用,能有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 377

更改SpringBoot Tomcat运行方式

Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O(非阻塞IO)的缩写。即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。

z69183787的专栏 624

RK3588+YT9215快速拓展以太网口

YT9215支持7个端口的非阻塞数据传输,确保高效的数据流处理;在开发过程中,最重要的一点就是YT9215与RK3588的GMAC连接和配置部分,下面是gmac1对应dtsi文件的修改,包括注释掉rgmii_phy1对应的mdio1,以及gmac1对应的phy-handle部分,同时将gmac1修改成1000Mbps全双工模式。这就是最简单,最快速的RK3588拓展网口的方法了,如果需要用到交换芯片的其他功能,那就不可以直接使用原厂提供的bin,而是需要对YT9215进行另外的驱动开发。

带着耳朵取流浪的博客 2783

Spring MVC 之Tomcat启动流程

是的,前面所讲述的 Servlet 的规范,无论是 web.xml 中的配置,还是 Servlet3.0 中的 ServletContainerInitializer 和 SpringBoot 的加载流程都没有太大的关联。如果应用程序是以 war 包的方式放入 Tomcat 的 webapps 文件夹下面,那么在 Tomcat 启动时会加载 war 包,生成对应的一个文件夹,Tomcat 则会去对 webapps 文件夹下面的每一个文件夹(我们的应用程序)生成一个部署任务,去解析对应的。

Coder_Boy_的博客 3527

深度强化Q学习-基于微软AirSim仿真环境的自动驾驶案例(原理代码详解简易可行)

最近在学习《强化学习原理与Python实现》,肖智清著。参考第十二章的自动驾驶案例,写一篇总结,尽量做到简单可行,让有志于自动驾驶的小伙伴可以通过此篇博客可以管中窥豹,初步了解自动驾驶的强化学习训练过程。 本篇将自动驾驶问题转化为回合制的强化学习任务,设计以车辆观察图像和运行状态为输入的自动驾驶算法,并在AirSim仿真环境中进行训练和测试。本篇使用带经验回放和目标网络的基于深度Q网络算法设计并实现智能体,对经验回放、目标网络和深度Q学习算法进行简单介绍,并用代码实现。

shao918516的博客 8599

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

将springboot项目启动方式由分包用外部tomcat启动变为用内置tomcat启动,同时引入nginx备用服务器

将springboot项目里原本分立的多个jar包形式打包成一个统一的jar包,写脚本进行启动和关闭,最后将项目配置成nginx的backup多个备用服务

cjy1575944940的博客 1376

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Tomcat在SpringBoot中是如何启动的

来自:掘金(作者:木木匠) 原文链接:https://juejin.im/post/5d3f95ebf265da039e12959e 前言 我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以把web程序打包成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动。本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学...

清风一阵吹我心 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深入springboot怎么启动tomcat

深入springboot怎么启动tomcat@EnableAutoConfiguration 这是中高级工程师面试中常问的问题。 知道现在有多卷了吧! 我记得我刚找工作那会儿,我只要8000的工资,面试官都要问这个问题。我真TM的醉了! 关于SpringBoot自动配置流程请看:深入Springboot启动流程+自动配置原理. 如果你对基本的启动原理有大致的了解,那么适合阅读此篇文章。否则请先阅读深入Springboot启动流程+自动配置原理.。 @EnableAutoConfiguration

易柏州的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

springboot启动后怎么访问_Tomcat在Spring Boot中是怎么启动的呢?

Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持。我们可以通过配置来指定我们需要的容器。本文以我们平时最常使用的容器Tomcat为列来介绍以下两个知识点:Spring Boot是怎么整合启动Tomcat容器的;在Spring Boot中,怎么进行Tomcat的深度配置。Spring Boot整合启动Tomcat的流程对于看源代码,每个人都有...

weixin_42515990的博客 1735

springboot启动流程和Tomcat启动

springboot启动流程和Tomcat启动springboot启动函数新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 springboot启动函数 @SpringBootApplication(scanBasePack

weixin_43955575的博客 2943

springboot tomcat配置_Tomcat在Spring Boot中是怎么启动的呢?

Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持。我们可以通过配置来指定我们需要的容器。本文以我们平时最常使用的容器Tomcat为列来介绍以下两个知识点:Spring Boot是怎么整合启动Tomcat容器的;在Spring Boot中,怎么进行Tomcat的深度配置。Spring Boot整合启动Tomcat的流程对于看源代码,每个人都有...

weixin_39757265的博客 99

SpringBoot 是如何启动一个内置的Tomcat

为什么说Spring Boot框架内置Tomcat 容器,Spring Boot框架又是怎么样去启动Tomcat的?

不怕万人阻挡,只怕自己投降 973

SpringBoot中内置的Tomcat如何启动的?

在springboot项目中,我们只需要引入spring-boot-starter-web依赖,启动服务成功,我们一个web服务就搭建好了,没有明显的看到tomcat。其实打开spring-boot-starter-web依赖,我们可以看到:依赖了tomcat。 1.进入Springboot启动类。我们加入Springboot最核心的注解@SpringBootApplication,源码如下图:重点看注解@EnableAutoConfiguration, 2.进入注解@EnableAutoCo.

孙振宁 8160

SpringBoot中启动Tomcat的步骤流程

SpringBoot中如何启动Tomcat流程 SpringBoot 项目之所以部署简单,其很大一部分原因就是因为不用自己折腾 Tomcat 相关配置,因为其本身内置了各种 Servlet 容器。一直好奇: SpringBoot 是怎么通过简单运行一个 main 函数,就能将容器启动起来,并将自身部署到其上 。此文想梳理清楚这个问题。 我们从SpringBoot的启动入口中分析: Context 创建 // Create, load, refresh and run the Applic.

求关注 2055

SpringBoot中Tomcat是如何启动的

Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持。我们可以通过配置来指定我们需要的容器。 本文以我们平时最常使用的容器Tomcat为列来介绍以下两个知识点: Spring Boot是怎么整合启动Tomcat容器的; 在Spring Boot中,怎么进行Tomcat的深度配置。 Spring Boot整合启动Tomcat的流程 对于看源代码,每个人都有自己的方法。我自己在看源代码的时候喜欢结合IDEA的Debug功能一...

m0_67455745的博客 2391

SpringBoot中的Tomcat是如何启动的

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 添加如上 Web 的依赖,Spring Boot 就帮我们内置了 Servlet 容器,默认使用的是 Tomcat,同样也支持修改,比如可以使用 jetty、Undertow 等。

niceyoo的博客 4625

SpringBoot内置Tomcat启动原理

该自动配置类通过@Import导入了可用(通过@ConditionalOnClass)判断决定使用哪一个)的一个Web容器工厂(默认Tomcat)。在内嵌Tomcat类中配置了一个TomcatServletWebServerFactory的Bean(Web容器工厂)它会在SpringBoot启动时加载ioc容器(refresh)OnRefresh创建内嵌的Tomcat并启动。也是通过自动配置类注册进来的:注册了DispatcherServlet。servlet容器自动配置类。

qq_46130027的博客 988

springboot在tomcat中启动两次的问题

springboot在tomcat中启动两次的问题

SongAn的博客 1592

springboot tomcat和端口没有启动_Tomcat在SpringBoot中是如何启动的

前言 我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序达成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。 从 Main 方法说起 用过SpringBoot的人都知道,首先要写一个main方法来启...

weixin_39593961的博客 482
上一篇: 在bootstrap3.7的基础上自定义模态dialog小工具
下一篇: MySQL5.7+ 解压缩版安装配置方法
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值