微信公眾號:一個優秀的廢人
如有問題或建議,請后台留言,我會盡力解決你的問題。
前言
哎呦喂,按照以往的慣例今天周六我的安排應該是待在家學學貓叫啥的。但是今年這種日子就可能一去不復返了,沒法辦法啊。前幾天年輕,立下了一周至少更兩篇文章的 flag 。廢話少說,今天接着前文給你們帶來了第一個 SpringBoot 工程的詳解。
第一個 SpringBoot 工程
前文已經說過了 SpringBoot 工程的創建,這里不再贅述,還不會的朋友,請看下面這篇文章。
學過編程的都知道,學習一門新語言的第一個項目肯定是 Hello World 。那這里也不例外,我們先創建一個非常簡單的 Hello World 工程。給大家講解 SpringBoot 的項目目錄。創建信息如下:
由於本文重點旨在講解 SpringBoot 的項目目錄。所以選擇的依賴包非常簡單,就選擇 Web 足矣。
SpringBoot 項目目錄詳解
創建成功之后的 SpringBoot 項目目錄如下,以下對各主要目錄的作用進行講解:
- src 是整個工程的根目錄,基本上做 web 開發你的代碼大部分都放在這里。其中 main 目錄下放置的是你的 Java 代碼;resource 目錄,顧名思義就是放置配置文件、靜態資源( static )以及前端模板( template )。
- test 目錄就是放置你的單元測試代碼。
- target 就是項目編譯生成的目錄,里面包含代碼編譯后的 class 文件以及一些靜態資源和配置文件。
- External Libraries 這里放置了,pom.xml 導入的依賴包。
- 其他沒提到的目錄都是不重要的。
由上圖項目目錄,可以看到有幾個文件,這些文件有些是我新建的,有些是項目生成的。下面我會講解:
- pom.xml 這個文件是整個項目最重要的文件,它包含了整個項目的依賴包。Maven 會根據這個文件導入相關的我們開發需要的依賴包。代碼如下:
可以看到 pom.xml 中一共有 4 個依賴,其中只有 Junit 是我手動加入的,用於單元測試。
其他的如 Spring Boot 啟動父依賴、Spring Boot web依賴 、Spring Boot web test依賴都是創建項目時,勾選 web 選項卡而生成的。這幾個依賴包的額作用就是 內嵌 Tomcat 容器,集成各 Spring 組件。比如 如果沒有依賴 web 包 ,Spring 的兩大核心功能 IOC 和 AOP 將不會生效。
<?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.nasus</groupId>
<artifactId>helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>helloworld</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- Spring Boot 啟動父依賴 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- Spring Boot web依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- HelloworldApplication.java 最為重要,它由項目生成,是整個工程的應用啟動類 main 函數。代碼由項目生成,代碼如下:SpringApplication 引導應用,並將 HelloworldApplication 本身作為參數傳遞給 run 方法。具體 run 方法會啟動嵌入式的 Tomcat 並初始化 Spring環境及其各 Spring 組件。
需要注意的是,這個類必須放在其他類的上冊目錄,拿上述目錄舉個栗子, 若其他HelloWorldController.java 類位於 com.nasus.controller 下。則 HelloworldApplication.java 類必須放置在 com.nasus 下或者 com 下(層級必須大於其他 java 類)。否則啟動項目訪問會報 Whitelabel Error Page 錯誤,原因是項目掃描不到 @RestController、@RequestMapping 等注解配置的方法和類。
package com.nasus.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
}
- HelloWorldController 是我手動編寫的,代碼如下:@RestController 和 @RequestMapping 注解是來自 SpringMVC 的注解,它們不是 SpringBoot 的特定部分。
其中 @RestController 注解的作用是:提供實現了 REST API,可以服務 JSON、XML 或者其他。這里是以 String 的形式渲染出結果。
其中 @RestController 注解的作用是:提供路由信息,"/“路徑的HTTP Request都會被映射到sayHello方法進行處理。
具體參考,Spring 官方的文檔《Spring Framework Document》
package com.nasus.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Project Name:helloworld <br/>
* Package Name:com.nasus.controller <br/>
* Date:2019/1/5 13:59 <br/>
* <b>Description:</b> TODO: 描述該類的作用 <br/>
*
* @author <a href="turodog@foxmail.com">nasus</a><br/>
* Copyright Notice =========================================================
* This file contains proprietary information of Eastcom Technologies Co. Ltd.
* Copying or reproduction without prior written approval is prohibited.
* Copyright (c) 2019 =======================================================
*/
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String sayHello() {
return "Hello,World!";
}
}
寫完 Controller 層的代碼,我們就可以啟動此項目。點擊 IDEA 項目啟動按鈕,效果如下:
- 好的程序必須配備完善的單元測試。HelloWorldControllerTest.java 文件是由我編寫的主要作用就是測試 HelloWorldController.java 中的方法。這里用的是 Junit 依賴包進行單元測試,代碼如下:這里的邏輯就是測試 HelloWorldController.java 的 sayHello 方法輸出的字符是否是 Hello,World!
package com.nasus;
import static org.junit.Assert.assertEquals;
import com.nasus.controller.HelloWorldController;
import org.junit.Test;
/**
* Project Name:helloworld <br/>
* Package Name:com.nasus <br/>
* Date:2019/1/5 14:01 <br/>
* <b>Description:</b> TODO: 描述該類的作用 <br/>
*
* @author <a href="turodog@foxmail.com">nasus</a><br/>
* Copyright Notice =========================================================
* This file contains proprietary information of Eastcom Technologies Co. Ltd.
* Copying or reproduction without prior written approval is prohibited.
* Copyright (c) 2019 =======================================================
*/
public class HelloWorldControllerTest {
@Test
public void testSayHello() {
assertEquals("Hello,World!",new HelloWorldController().sayHello());
}
}
編寫完成之后,可以通過以下按鈕啟動單元測試類。
測試結果如下:可以看到紅圈框住的地方,出現這個綠色標志證明單元測試沒問題。sayhello 方法的結果是對的。
后語
我為什么要寫這種這么簡單的教程?
是這樣的,我始終認為比我聰明的人有很多,但比我笨的人也不少。在中國有很多你認為眾所周知的事,其實有一車人根本不知道,這篇文章哪怕只幫助到一個人,足矣。
之后我打算出一個 SpringBoot 系列的教程,敬請關注與指正,本人也是一個小菜鳥在打怪升級中,如本文有不正確的地方,煩請指正。一起學習一起進步。
以上就是使用 IDEA 創建 SpringBoot 的過程,希望對你們有幫助。
送點面試題 & 電子書
如果看到這里,喜歡這篇文章的話,請幫點個贊。
初次見面,也不知道送你們啥。干脆就送幾百本電子書和2021最新面試資料吧。微信搜索一個優秀的廢人回復電子書送你 1000+ 本編程電子書;回復面試送點面試題;回復1024送你一套完整的 java 視頻教程。
面試題都是有答案的,如下所示:有需要的就來拿吧,絕對免費,無套路獲取。