soringboot項目啟動:
springboot內部嵌入了tomcat,在spring-boot-starter-web里可以找到,
在這里插入圖片描述

這樣在研發過程中就不在需要tomcat服務器,並且springboot項目在打完jar之后,可以直接啟動也不需要另外的本地tomcat。也就是說拿到springboot項目jar之后,完全可以在一台只有jdk的機器上啟動了。
springboot啟動
上面說過了springboot項目自帶了tomcat,所以項目啟動和部署不需要額外的tomcat服務器了,這里關鍵的是springboot項目會有一個啟動類,這個是springboot項目的入口,
在這里插入圖片描述

上面可以看出啟動類需要一個關鍵的注解@SpringBootApplication,看下改注解背后的內容,
@Target(ElementType.TYPE) // 注解的適用范圍,其中TYPE用於描述類、接口(包括包注解類型)或enum聲明
@Retention(RetentionPolicy.RUNTIME) // 注解的生命周期,保留到class文件中(三個生命周期)
@Documented // 表明這個注解應該被javadoc記錄
@Inherited // 子類可以繼承該注解
@SpringBootConfiguration // 繼承了Configuration,表示當前是注解類
@EnableAutoConfiguration // 開啟springboot的注解功能,springboot的四大神器之一,其借助@import的幫助
@ComponentScan(excludeFilters = { // 掃描路徑設置(具體使用待確認)
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
可以看出@SpringBootApplication使用了多個注解,其中最為重要的就是
@Configuration 使用javaconfig方式進行配置,形式的Spring Ioc容器的配置類
@EnableAutoConfiguration 比較重要的,這里不做解釋了
@ComponentScan 掃描注解,自動掃描並加載符合條件的組件
其實可以說,你可以使用@SpringBootApplication,你也可以使用以上三個注解都一樣。
詳細介紹https://www.cnblogs.com/shamo89/p/8184960.html
有個這些,你就可以簡單的理解,啟動一個springboot項目,會從啟動類入口進去,通過@SpringBootApplication注解之后自動的去掃描加載一些javaconfig 配置,啟動內置tomcat將項目運行起來。
springboot項目部署方式
啟動方式一,jar包(官方推薦):
我們以前在部署web項目的時候基本山都是打成war包放到tomcat的webapp下面,啟動tomcat。這種方式不僅僅耗時耗力,還需要要求部署項目的服務器事先就要有能夠部署的環境。有時候還需要手動修改tomcat配置文件。
springboot就是極大的簡化了項目的部署。
我們只需要將項目打成jar包,然后放在只需要有jdk的服務器上,java -jar ***就能啟動項目了。
那么問題來了,以往我們對於web項目都是war包的形式進行部署的,為啥springboot項目卻能想啟動java應用程序一樣部署呢?
上面也已經說過了,springboot是內置tomcat了的,所以項目啟動的時候回自動啟動tomcat,但是我們都知道啟動jar文件都是需要有主類(main),
沒錯,它是就是我們的啟動類,既然是主類,那肯定就會有啟動弄類配置的吧,就是這個maven-shade-plugin,去找找看。


果然是有的,所以說現在問題都解決了,springboot通過maven插件配置了啟動類,所以就可以java -jar的形式啟動項目,啟動類被啟動之后就會掃描加載配置,啟動內置的tomcat等,最后完成了項目的啟動部署了。
啟動方式二,war包
1.傳統的部署方式:將項目打成war包,放入tomcat 的webapps目錄下面,啟動tomcat,即可訪問。
開發環境:jdk1.8 + IDEA
2.修改pom.xml
完整pom.xml代碼如下
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 這里打成war包 若打jar,需將war改為jar -->
**<packaging>war</packaging>**
<name>demo1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>demo1</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.打包
這里可以直接到項目根目錄下面:運行 maven package命令,打包。
4.將war放入外部tomcat的webapps目錄下
5.啟動tomcat
以上就是關於springboot和tomcat之間關系的使用總結,早上吃飯時候被曹寶問的一臉懵,查了查資料,總結以上,望大家指點,共勉曹寶,謝謝。
