天天看點

springboot實戰(1):使用idea建立helloworld

1、建立方式

目前 idea 版本為 2019 版本。

springboot實戰(1):使用idea建立helloworld

如上圖所示,點選 File——New——Project,然後打開如下界面:

springboot實戰(1):使用idea建立helloworld

需要注意的是,上面兩個紅框的内容:Maven 和 Spring Initailizer 的差別,我在網上查了一下,兩者本質上沒有太大差別,都可以建立 Maven 項目,主要差別在于在 pox.xml 中導入依賴包的時間不同:

  • Maven 建立 spring 項目,所需要的依賴需要手動在 pox.xml 中添加(适合網絡差的情況下使用)
  • Spring Initailizer 則是 Spring 提供的一個模闆(這個可以選擇),我們在建立的時候就可以通過手動勾選的方式,建立結束,自動在 pox.xml 中添加依賴包

一般建立的時候,還是使用 Spring Initailizer 比較好,很友善。

後續更新:

上面寫的有些小失誤,其實 maven 也是有模闆的,勾選 create from archetype 後,則可以使用下面的 maven 原型模闆進行建立:
springboot實戰(1):使用idea建立helloworld
Archetype 是 Maven 項目模闆工具箱,裡面有很多 maven 項目模闆(作用類比 PPT 模闆)。具體使用可以參考:Maven Archetype 模闆開發和使用 Maven Archetype 基于 IDEA 快速建立項目

需要注意的是:使用 archetype 模闆後會下載下傳很多依賴(可能不需要的),是以最好的應用是自己定義一個常用的 archetype 模闆。

部落客并不常用 maven 建立項目(至少現在是),是以不多說了,以後如果用的多了,會再寫一篇來說明的。下面依然是以 spring Initailizer 建立方式來說明。

2、項目描述

繼續上面的内容,打開界面以後,左邊選擇 Spring Initailizer,右邊選擇對應的 SDK,并且選擇初始化模闆 URL(這個是 spring 官網線上模闆,預設選擇,custom 是自定義,可以自己加入其它線上模闆),然後 next:

springboot實戰(1):使用idea建立helloworld

這裡我們可以看一下,線上模闆的配置有哪些内容:

springboot實戰(1):使用idea建立helloworld

自動生成對于項目的一些描述,可以進行更改(下圖是預設内容,大家可以結合我下面對于每個内容的介紹,根據自己的需求進行更改):

springboot實戰(1):使用idea建立helloworld
  • group:對應 pom 檔案中的 groupId,項目組織的唯一辨別,對應 java 包的結構
  • Artifact:對應 pom 檔案的 artifactId,項目唯一辨別,對應項目名稱
  • type:我們是 Maven 建構的,第一個選擇 Maven Project
  • language:開發語言,毫無疑問,java
  • packaging:打包類型,也就是最後項目完結了,我們可以打包成 jar 類型,除了 jar 類型就是 war 類型
  • java Version:這個要選擇自己安裝的 jdk 版本
  • Version:項目版本,對應 pom 檔案的 version
  • Description:項目描述,對應 pom 檔案的 description
  • package:包名

上面主要需要改的,其實就是 Artifact,也就是項目名稱,還有 javaVersion。

如果仔細看就會發現,上面的内容和線上模闆内容是一模一樣的。

3、選擇依賴

springboot實戰(1):使用idea建立helloworld

選擇依賴的時候,Spring Web 是我們必須要選擇,其他都是非必要的,之後用到可以手動在 pom.xml 中添加。

springboot實戰(1):使用idea建立helloworld

之後就是項目名稱和位置了,其中項目名稱是自動填充之前的 Artifact,如果之前填寫無誤則不用更改,項目位置可以自己選,然後點選 Finish 就完成了!

完成之後,會在右下角出現依賴導入提示:

springboot實戰(1):使用idea建立helloworld

直接點選 import changes 即可,這個是根據你的 pom 檔案來來導入,先去你本地的 maven 倉庫檢視有沒有相應的依賴包,如果沒有,則去中央倉庫(spring 伺服器中)下載下傳下來,具體可以參考:idea工具使用(1):依賴包詳解

4、項目目錄

springboot實戰(1):使用idea建立helloworld

如上圖中,

  • src/main/java 下面是源代碼,所有後端代碼都要在這裡寫,
  • src/main/resources 是應用資源
    • static:儲存所有的靜态資源,如 js、css、images、音視訊檔案等;
    • templates:儲存所有的模闆頁面,注意 Spring Boot 預設 jar 包使用嵌入式的 Tomcat,預設不支援 JSP 頁面);但可以使用模闆引擎,如 freemarker、thymeleaf;
    • application.properties:Spring Boot 應用的配置檔案,用來修改 Spring Boot 的預設設定,如 Tomcat 的預設端口号等;
  • src/test:Maven 的測試目錄

5、運作項目

在 src/main/java/com…/包下面建立一個 controller 包,用來盛放 controller 類,建立一個 HelloWord 類,如下:

package com.springlearning.springbootlearning.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class Helloworld {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello world!";
    }
}
           

然後打開浏覽器輸入:http://localhost:8080/hello,就可以看到想要的網頁了。

springboot實戰(1):使用idea建立helloworld

問題一:為什麼是 8080 端口

springboot實戰(1):使用idea建立helloworld

Apache-Tomcat 一般就是使用 8080 端口,至于 80 端口和 8080 端口的差別,具體參考:https://www.cnblogs.com/Renyi-Fan/p/12026802.html

問題二:根目錄中的.idea 等目錄作用

.idea 檔案夾:

存放項目的配置資訊——包括資料源,類庫,項目字元編碼,曆史記錄,版本控制資訊等。

mvnw

全名是 maven wrapper 的檔案,作用是在 maven-wrapper.properties 檔案中記錄你要使用的 maven 版本,當使用者執行 mvnw clean 指令時,發現目前使用者的 maven 版本和期望的版本不一緻,那麼就下載下傳期望的版本,然後用期望的版本來執行 mvn 指令,比如 mvn clean 指令。

.mvn 檔案夾

存放 mvnw 相關檔案——存放着 maven-wrapper.properties 和相關 jar 包以及名為 MavenWrapperDownloader 的 java 檔案

mvn.cmd

執行 mvnw 指令的 cmd 入口,mvnw 檔案适用于 Linux(bash),mvnw.cmd 适用于 Windows 環境。

.iml 檔案

intellij idea 的工程配置檔案裡面包含目前 project 的一些配置資訊,如子產品開發的相關資訊,比如 java 元件,maven 元件,插件元件等,還可能會存儲一些子產品路徑資訊,依賴資訊以及一些别的資訊。

.gitignore

分布式版本控制系統 git 的配置檔案,意思為忽略送出。在.gitingore 檔案中,遵循相應的文法,即在每一行指定一個忽略規則。如:.log、/target/、.idea

pom.xml:

主要描述了項目的 maven 坐标,依賴關系,開發者需要遵循的規則,缺陷管理系統,組織和 licenses,以及其他所有的項目相關因素,是項目級别的配置檔案。當然對于日常來說,就是添加各種依賴的檔案。

上述檔案中,隻有 pom 檔案我們會經常使用,其他都可以忽略。

6、進行熱部署

參考:idea 配置 springboot 熱部署終極解決辦法,解決熱部署失效問題

更多精彩内容關注我的個人網站:藍亞之舟部落格。

繼續閱讀