詳解springboot-修改內置tomcat版本

SpringBoot中內置了tomcat,使得我們可以不使用外部的tomcat,來啓動SpringBoot程序。

1、解析Spring Boot父級依賴

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
    </parent>

這塊配置就是Spring Boot父級依賴,有了這個,當前的項目就是Spring Boot項目了,spring-boot-starter-parent是一個特殊的starter,它用來提供相關的Maven默認依賴,使用它之後,常用的包依賴可以省去version標籤。關於Spring Boot提供了哪些jar包的依賴,可以去你的Maven倉庫中查看。
比如在我的Maven倉庫中,路徑爲:
F:\maven\repository\org\springframework\boot\spring-boot-dependencies\2.2.2.RELEASE\spring-boot-dependencies-2.2.2.RELEASE.pom

2、打開這個pom文件,搜索“tomcat.version” 會找到:

在這裏插入圖片描述

<tomcat.version>9.0.29</tomcat.version>

在這裏插入圖片描述
①可以直接在這裏修改你想要的tomcat版本
②在你自己的項目的pom裏面添加版本,就可以直接覆蓋這裏的版本了。如:

pom.xml 中tomcat版本配置代碼

<properties>
	<tomcat.version>8.0.29</tomcat.version>
</properties>

添加這個之後,spingboot的默認啓動的tomcat版本就可以達到你自己需要的了。到這裏基本就完成了。
但是有時候啓動會報錯:

1 Caused by: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
2 at org.apache.catalina.util.LifecycleBase.<clinit>(LifecycleBase.java:37)
3 at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:169)
4 at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164)
5 at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134)
6 ... 13 common frames omitted
7

因爲這個時候的tocmat缺少jar包,maven項目的話加上下面這個依賴就好了:

<dependency>
	<groupId>org.apache.tomcat</groupId>
	<artifactId>tomcat-juli</artifactId>
	<version>${tomcat.version}</version>
</dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章