記錄 SpringBoot 踩坑經歷

1、spring-boot-starter-web 作用

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

在使用 IDEA 每次自動創建項目的時候,都會自動加上以上依賴!但是你有沒有仔細想過,爲什麼?

今天小司機帶你開車,一探究竟。兄弟們,坐穩了,小心翻車!!

1.1、加或者不加 spring-boot-starter-web 有沒有區別

答案是當然有了! SpringBoot 沒有出現的時候,做過 web 的朋友都知道,搭建項目時候需要各種 xml 的配置,進行依賴關係的導入,還需要配置 web.xml 進行請求的攔截,在外部配置一個 tomcat 容器,每次啓動項目的時候,使用 tomcat:run ,啓動完成後,才能訪問項目的資源和本地測試等。 但是當 SpringBoot 出現的時候,這一切都大大簡化了。

因爲 Spring Boot 支持容器的自動配置,它默認是Tomcat容器(如下圖紅色所示),開發者可以可以進行修改。如果沒有添加這個 web 依賴,在啓動 SpringBoot 項目的時候,不會報錯,但是啓動不了項目!

我們可以這麼理解,每次項目的啓動都必須在容器中執行,所以 spring-boot-starter-web這個依賴給我們默認已經配置了容器(tomcat),我們不需要在外部配置 其他容器了。如果沒有添加這個依賴,就會導致項目無法找到依賴的容器,無法找到容器,當然就不會啓動了。

在這裏插入圖片描述

1.2、 如何排除spring-boot-starter-web 依賴中的 Tomcat ,添加其他容器

排除依賴容器 tomcat
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
		</exclusion>
	</exclusions>
</dependency>

加入Jetty容器
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

2、com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的區別

com.mysql.jdbc.Driver 是 mysql-connector-java 5 中的。

com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6 中的。

2.1、 JDBC 連接 Mysql5 需用 com.mysql.jdbc.Driver

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false

username=root

password=root

2.2、JDBC連接Mysql6需用com.mysql.cj.jdbc.Driver,同時需要指定時區serverTimezone

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&?useUnicode=true&characterEncoding=utf8&useSSL=false

username=root

password=root

2.3、設定時區時,serverTimezone=UTC比中國時間早8個小時,若在中國,可設置serverTimezone=Shanghai或者serverTimezone=Hongkong

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false

username=root

password=root

2.4、總結: 如果mysql-connector-java用的 6.0 以上的 ,如下:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
</dependency>

但是 driver 用的還是 com.mysql.jdbc.Driver 就會報錯,此時需要把 com.mysql.jdbc.Driver 改爲com.mysql.cj.jdbc.Driver。

即可運行成功!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章