前置知識
我們創建的項目會自動生成application啟動類,直接run即可執行。
但是要通過外置的tomcat啟動,則需要創建新的入口。默認的啟動類要繼承SpringBootServletInitiailzer類,并復寫configure()方法,并通過builder指定application。
SpringBootServletInitializer的執行過程,簡單來說就是通過SpringApplicationBuilder構建并封裝SpringApplication對象,并最終調用SpringApplication的run方法的過程。
spring boot就是為了簡化開發的,也就是用注解的方式取代了傳統的xml配置。
SpringBootServletInitializer就是原有的web.xml文件的替代。使用了嵌入式Servlet,默認是不支持jsp。
SpringBootServletInitializer 可以使用外部的Servlet容器,使用步驟:
1.pom.xml指定war打包方式。
<packaging>war</packaging>
2.pom.xml添加依賴
注意嵌入式Tomcat依賴scope必須指定provided。
<!--部署到Tomcat服務器 war包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3.編寫SpringBootServletInitializer類子類,并重寫configure方法。
public class MySpringBootServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootSqlDemoApplication.class);
}
}
4.打war包,啟動服務器
jar包和war包啟動區別
jar包:執行SpringBootApplication的run方法,啟動IOC容器,然后創建嵌入式Servlet容器
war包: 先是啟動Servlet服務器,服務器啟動Springboot應用(springBootServletInitizer),然后啟動IOC容器
Servlet 3.0+規則
1 服務器啟動(web應用啟動),會創建當前web應用里面所有jar包里面的ServletContainerlnitializer實例
2 ServletContainerInitializer的實現放在jar包的META-INF/services文件夾下
3 還可以使用@HandlesTypes注解,在應用啟動的時候加載指定的類。
SpringBootServletInitializer實例執行onStartup方法的時候會通過createRootApplicationContext方法來執行run方法,接下來的過程就同以jar包形式啟動的應用的run過程一樣了,在內部會創建IOC容器并返回,只是以war包形式的應用在創建IOC容器過程中,不再創建Servlet容器了。
mvn clean install -Dmaven.test.skip=true
在https://tomcat.apache.org/ 下載安裝tomcat
Servlet3.0特性詳解-筆記
這里注意下載9.x版本
服務器的配置,保持默認就好一直next過去
驗證最終安裝成功
打開任意瀏覽器,鍵入localhost:8080(之前設置的端口),如果正確顯示安裝的Tomcat的信息,那么恭喜你安裝成功!
將上面打包好的war包 放入Tomcat安裝目錄下webapp文件夾
window打開Monitor Tomcat查看Tomcat安裝目錄
Linux查看tomcat安裝路徑
sudo find / -name *tomcat*
[tomcat安裝目錄詳解 - 知乎](https://www.baidu.com/link?url=i-hMAoIVN7Ad3z8L2zUl5CyWfaMfDW3fMrJ1g29hM3R
KsPFqj-ojI9n9GzEdOh1W&wd=&eqid=d01501d6000384ec000000045fb63489)
注意這里運行成功會解壓縮到當前目錄,也可以手動解壓之后,啟動tomcat則會解析該目錄的
Windows使用WinRAR 進行解壓war文件
啟動Tomcat
在Monitor Tomcat線停止之后,再啟動一次
或者終端切到安裝目錄的bin目錄下,里面包含了start和stop的程序
cd C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin
startup.bat
打開localhost:8080
打開任意瀏覽器,鍵入localhost:8080
當前沒有編寫web界面,Tomcat則會打開默認的界面
打開項目界面
我們知道tomcat安裝目錄下webapp下面的項目都能夠運行,只要在瀏覽器輸入對應的地址,即可訪問。如下圖對應的項目為demo-0.0.1,只要在域名(這里是本地http://localhost:8080/)后添加即可。由于集成了swagger,后面加上swagger-ui.html即可訪問,同理換成項目的其他web界面path即可訪問對應的界面。
請求接口
在swagger界面上,發送接口請求,我們可以看到請求的地址
查看本機局域網ip
cmd命令查看ip,輸入
ipconfig
mac 在網絡連接
將localhost更換為192.168.1.144
用本地IP(或域名)更換localhost
同理,只需要將war包部署到服務器上tomcat的webapp目錄,并且服務器配置了域名之后,就可以通過域名訪問我們的服務了。