001SpringBoot構建專案
有兩種方式來構建 Spring Boot 專案基礎框架,第一種是使用 Spring 官方提供的構建頁面;第二種是使用 IntelliJ IDEA 中的 Spring 外掛來建立。
第一種、使用 Spring 官方提供頁面構建
- 訪問 http://start.spring.io/ 網址。
- 選擇構建工具 Maven Project,程式語言選擇 Java、Spring Boot 版本 2.0.5 以及一些工程基本資訊,具體可參考下圖。
- 單擊 Generate Project 下載專案壓縮包。
- 解壓後,使用 IDEA 匯入專案,選擇 File | New | Model from Existing Source.. | 選擇解壓後的資料夾 | OK 命令,選擇 Maven,一路單擊 Next 按鈕,OK done!
- 如果使用的是 Eclipse,選擇 Import | Existing Maven Projects | Next | 選擇解壓後的資料夾 | Finsh 按鈕,OK done!
第二種、使用 IDEA 構建
- 選擇 File | New | Project... 命令,彈出新建專案的對話方塊。
- 選擇 Spring Initializr,Next 也會出現上述類似的配置介面,IDEA 幫我們做了整合。
- 填寫相關內容後,單擊 Next 按鈕,選擇依賴的包再單擊 Next 按鈕,最後確定資訊無誤單擊 Finish 按鈕。
對上面的配置做如下解釋。
- 第一個選擇框選擇建立以 Maven 構建專案,還是以 Gradle 構建專案,這是兩種不同的構建方式,其中 Gradle 配置內容更簡潔一些,並且包含了 maven 的使用,但我們日常使用 maven 居多。
- 第二個選擇框選擇程式語言,現在支援 Java、Kotlin 和 Groovy。
- 第三個選擇框選擇 Spring Boot 版本,可以看出 Spring Boot 2.0 的最新版本是 2.0.5。
下面就是專案的配置資訊了。
- Group,一般填寫公司域名,比如百度公司就會填:com.baidu,演示使用 com.neo。
- Artifact,可以理解為專案的名稱了,可以根據實際情況來填,本次演示填 hello。
- Dependencies,在這塊新增我們專案所依賴的 Spring Boot 元件,可以多選,本次選擇 Web、Devtools 兩個模組。
專案結構介紹
如上圖所示,Spring Boot 的基礎結構共三個檔案,具體如下:
- src/main/java:程式開發以及主程式入口;
- src/main/resources:配置檔案;
- src/test/java:測試程式。
另外,Spring Boot 建議的目錄結構如下。
com.example.myproject 目錄下:
myproject
+-src
+- main
+- java
+- com.example.myproject
+- comm
+- model
+- repository
+- service
+- web
+- Application.java
+- resources
+- static
+- templates
+- application.properties
+- test
+-pom.xml
com.example.myproject 目錄下:
- Application.java,建議放到根目錄下面,是專案的啟動類,Spring Boot 專案只能有一個 main() 方法;
- comm 目錄建議放置公共的類,如全域性的配置檔案、工具類等;
- model 目錄主要用於實體(Entity)與資料訪問層(Repository);
- repository 層主要是資料庫訪問層程式碼;
- service 層主要是業務類程式碼;
- web 層負責頁面訪問控制。
resources 目錄下:
- static 目錄存放 web 訪問的靜態資源,如 js、css、圖片等;
- templates 目錄存放頁面模板;
- application.properties 存放專案的配置資訊。
test 目錄存放單元測試的程式碼;pom.xml 用於配置專案依賴包,以及其他配置。
採用預設配置可以省去很多設定,也可以根據公司的規範進行修改,至此一個 Java 專案搭建好了!
Pom 包介紹
pom.xml 檔案主要描述了專案包的依賴和專案構建時的配置,在預設的 pom.xml 包中分為五大塊。
第一部分為專案的描述資訊:
<groupId>com.neo</groupId>
<artifactId>hello</artifactId>
<version>2.0.5.RELEASE</version>
<packaging>jar</packaging>
<name>hello</name>
<description>Demo project for Spring Boot</description>
- groupId,專案的包路徑;
- artifactId,專案名稱;
- version,專案版本號;
- packaging,一般有兩個值:jar、war,表示使用 Maven 打包時構建成 Jar 包還是 War 包;
- name,專案名稱;
- description,專案描述。
第二部分為專案的依賴配置資訊:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- parent,標籤內配置 Spring Boot 父級版本 spring-boot-starter-parent,Maven 支援專案的父子結構,引入父級後會預設繼承父級的配置;
- dependencies,標籤內配置專案所需要的依賴包,Spring Boot 體系內的依賴元件不需要填寫具體版本號,spring-boot-starter-parent 維護了體系內所有依賴包的版本資訊。
<scope>test</scope>
,表示依賴的元件僅僅參與測試相關的工作,包括測試程式碼的編譯和執行,不會被打包包含進去;- spring-boot-starter-test 是 Spring Boot 提供專案測試的工具包,內建了多種測試工具,方便我們在專案中做單元測試、整合測試。
第三部分為構建時需要的公共變數:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
上面配置了專案構建時所使用的編碼,輸出所使用的編碼,最後指定了專案使用的 JDK 版本。
第四部分為構建配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用 Maven 構建 Spring Boot 專案必須依賴於 spring-boot-maven-plugin 元件,spring-boot-maven-plugin 能夠以 Maven 的方式為應用提供 Spring Boot 的支援,即為 Spring Boot 應用提供了執行 Maven 操作的可能。spring-boot-maven-plugin 能夠將 Spring Boot 應用打包為可執行的 jar 或 war 檔案,然後以簡單的方式執行 Spring Boot 應用。
以上即為 pom.xml 檔案基礎內容,幾乎所有的 Spring Boot 專案都會用到以上配置資訊。
完整的pomp檔案
<?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>
<groupId>com.mystudy</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.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-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>