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。
即可運行成功!!!