之前就接觸過springboot作爲框架的項目,但是不是我自己搭建的,當時看了一下結構,和spring項目比,springboot採用註解方式簡化了配置,廢話不多說,咱們就手動搭建一個簡單的springboot項目。
注意:現在springboot幾個新版本都是基於JDK1.8的,所以我接下來的幾篇文章的講解,也全部圍繞JDK1.8來。
我先講怎麼利用eclipse工具常規的創建一個spring項目,考慮到有些小夥伴急切的想創建一個最簡單的項目,我會在再講一種快速創建springboot項目的方式!
搭建過SSM框架的小夥伴可能心裏有會感受,就是各種配置比較多:spring本身的配置,springMVC的配置,還有jdbc數據源的配置等等,如果沒有搭建過SSM框架的小夥伴,建議你自己搜一搜搭建過程,然後有對比性的看springboot的搭建過程,這樣有助於學習。
一,先創建一個springboot的maven項目
1.這裏我是用的工具是eclipse,所以我們要先下載一個插件(STS),HELP---eclipse Marketplace ,search中搜索 STS,結果見下圖:
然後點擊安裝就好了,一路next知道完成。完成後重啓一下就好!
2.安裝好了STS插件,就來創建項目:
在項目空白處右鍵:new--project,然後搜索spring選擇如下:
x
下一步:
注意:一般我們建立web項目,一定要選擇war!!!要不然後面自動生成的pom文件中沒有spring-boot-starter-web!!
下一步:
選擇需要的Dependency,然後點擊finish
在這裏我選了MySQL 和mybatis和web 三個依賴,然後點擊完成。如果是JDBC或者Oracle,你可以自行選擇數據庫驅動。
等待創建項目,要等一段時間,因爲在下載jar。
下面是項目的主要結構:
大家可以打開pom文件,可以看到以下幾個部分:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web應用基本環境配置,支持全棧式Web開發,包括Tomcat和spring-webmvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入了Spring Boot默認的HTTP引擎Tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--支持常規的測試依賴,包括JUnit、Hamcrest、Mockito以及spring-test模塊-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mybatis依賴 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- spring-boot-maven-plugin插件就是打包spring boot應用的 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
PS:更多的依賴我會在後面的章節中給大家講解,目前的上述幾個配置能滿足我們最低的要求了。
接下來我們創建一個簡單的controller;
然後啓動,那怎麼啓動呢?看上圖的DemoApplication.java,這個類是springBoot的啓動類:
看到裏面的main函數,右鍵--run as--Spring boot App,就開始啓動了,結果報錯了,如下:
這是因爲我們在創建項目的時候添加了數據庫驅動依賴(MySQL),當項目啓動的時候,springboot就會創建數據源,但是我們又沒有做任何的數據源連接配置,解決方式:
(1)把pom文件中的數據庫依賴註釋掉;(我們可以暫時不用連接數據庫)
(2)讓springBoot啓動的時候不去自動創建數據源:
改成@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
再啓動就可以了!(如果遇到端口衝突,殺一下進程就好了,參考:https://blog.csdn.net/q343509740/article/details/80821409)
注意:我的URL裏沒有添加項目名,爲什麼呢?有很多人剛接觸springboot做測試時候,在訪問的時候肯定加上了項目名稱,結果肯定是404。
答案:
SpringMVC的運行方式是將打成的war包放到tomcat中運行,這種情況下訪問需要在url中加入項目名。SpringBoot同樣可以打成war包部署,但也提供了另一種方式:直接執行public static void main()函數並啓動一個內嵌的應用服務器(取決於類路徑上的依賴是Tomcat還是jetty)來處理應用請求,這時是不需要添加項目名的。
====================================快速創建簡單的springboot項目===================================
maven構建項目
- 1、訪問http://start.spring.io/
- 2、選擇構建工具Maven Project、Spring Boot版本2.1.1以及一些工程基本信息,點擊“Switch to the full version.”java版本選擇1.8,可參考下圖所示:
- 3、點擊Generate Project下載項目壓縮包
- 4、解壓後,使用eclipse,Import -> Existing Maven Projects -> Next ->選擇解壓後的文件夾-> Finsh,OK done!
項目結構介紹
Spring Boot的基礎結構共三個文件:
- src/main/java 程序開發以及主程序入口
- src/main/resources 配置文件
- src/test/java 測試程序
另外,spingboot建議的目錄結果如下:
root package結構:com.example.myproject
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
| +- CustomerController.java
|
- 1、Application.java 建議放到根目錄下面,主要用於做一些框架配置
- 2、domain目錄主要用於實體(Entity)與數據訪問層(Repository)
- 3、service 層主要是業務類代碼
- 4、controller 負責頁面訪問控制
採用默認配置可以省去很多配置,當然也可以根據自己的喜歡來進行更改
最後,啓動Application main方法,至此一個java項目搭建好了!
引入web模塊
1、pom.xml中添加支持web的模塊:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
pom.xml文件中默認有兩個模塊:
spring-boot-starter
:核心模塊,包括自動配置支持、日誌和YAML;
spring-boot-starter-test
:測試模塊,包括JUnit、Hamcrest、Mockito。
2、編寫controller內容:
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
@RestController
的意思就是controller裏面的方法都以json格式輸出,不用再寫什麼jackjson配置的了!
3、啓動主程序,打開瀏覽器訪問http://localhost:8080/hello,就可以看到效果了,有木有很簡單!
==========好了,學習到這裏是不是覺得springBoot很簡單啊,但是有很多細節一定要理解===========
1.DemoApplication這個類(名稱可能有所區別,這個是啓動類)一定要在目錄的最上層,或者你的controller,service等代碼的目錄層級一定要比DemoApplication的目錄要低,也可以同級!爲什麼?
答案:因爲springBoot之所以簡單,就是因爲DemoApplication這個啓動類,可以當做是一個spring容器!當這個類的main執行,它會按照規則加載它下面的所有東西並進行管理!其實和spring的道理一樣。
大家可以試試,如果把我們剛建立的controller轉移到DemoApplication的上級目錄或者上級目錄的子目錄中,你再去訪問就會404!
2.因爲springBoot默認使用了自帶的tomcat,默認的端口8080,很多時候會和別的項目端口衝突,這時候我們可以修改端口,很簡單,我們下一章會講到;
3.如何去配置項目的數據源,相比於spring,也很簡單,關於配置的問題,我們在第三章(https://blog.csdn.net/qq_32317661/article/details/85784923)會講到!
那麼接下來第二章,我們講一下,替換springboot自帶的tomcat,使用我們自己的tomcat容器發佈項目,地址:
https://blog.csdn.net/qq_32317661/article/details/85708032
如果你需要創建springboot+maven的父子級項目,請看我這篇文章:
https://blog.csdn.net/qq_32317661/article/details/102967216
江湖險惡,我從來都不輕易留下我的名字------周星馳