從零開始完整搭建 Spring-Boot 項目開發框架的教程

前言

難度:簡單
類型:step-by-step
適用:初學者,完全沒有接觸過 Spring-Boot
開發環境:jdk 1.8
關鍵詞:java, sring-boot, spring-mvc, restful
筆者環境:macOS

1. 項目創建

1.1 使用腳手架生成項目

打開 http://start.spring.io/ 網站,選擇Gradle ,依賴項選擇Web(網站)DevTools(開發工具)JPA(ORM)MySQL(數據庫)Thymeleaf(模板)
如下圖所示:

start.spring.io

2. 項目配置

2.1 配置 application.properties

打開~demo/src/main/resource/application.properties文件,添加必要配置,如下:

#服務端口
server.port=8012
#mysql 配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mysql 鏈接字符串
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false
#mysqly用戶名和密碼
spring.datasource.username=your_mysql_name
spring.datasource.password=your_mysql_password
#jap 配置,是否輸出 sql
spring.jpa.show-sql=true
#thymeleaf配置
#開發環境關閉緩存
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=utf-8
#設置使用非嚴格的HTML5校驗
spring.thymeleaf.mode=LEGACYHTML5
#調整id生成策略
spring.jpa.hibernate.use-new-id-generator-mappings=false

2.2 配置 Application 主入口

打開類文件 demo/src/main/java/com/example/demo/DemoApplication.java

2.2.1 添加注解@ComponentScan

組件掃描,如果不添加,可能無法正確的@Autowired

2.2.2 添加注解@Configuration

聲明配置,告訴 Spring,該類是bean 的配置類

2.2.3 完成后的樣子

如下圖:


DemoApplication

3. Resftful 接口的示例

3.1 添加數據表的 Entity 實體類

3.1.1假設有一個數據表test_user_info

結構如下圖 :


表結構

插入一些測試數據:


測試數據

3.1.2 新建包名 entities

其中新建 Entity 實體 TestUserInfo,完整如下圖:

TestUserInfo.java

其中@Entity 聲明這是一個數據實體,因為表名和類名不一致,所以用@Table 告訴 Jpa,這個表名的具體名字。

@Id 聲明了主鍵,@GeneratedValue聲明了主鍵是自增的,

@Column 聲明了字段名的真實名字,Jpa 大小寫是代表下劃線分割,所以只能傳全部小寫的字段名。

3.2 新建 Repository

3.2.1 新建包名 repositories

新建接口 TestUserInfoRepository,該接口繼承自,,需要JpaRepository<T,ID>T就是數據實體類,ID是類 id 字段的類型,如下圖:

TestUserInfoRepository.java

@Repository 聲明,告訴Spring-Boot,這是一個倉儲的組件。

3.2.2 創建查詢

因為 JpaData,采用的是規范契約的方式來聲明查詢,所以只要按照規范來創建接口中的方法,框架會自動生成對應的 sql 語句。如果有特殊需求,也可以用聲明的方式寫 sql 語句,例如:


TestUserInfoRepository.java

上下兩條語句的效果一樣,區別就是第一條按照規格來寫,框架會自動提示字段的名字,定義了方法,框架會自動解析 sql,第二條框架會讀取@Query中的 sql 使用。

3.3 創建 Service 服務

3.3.1 新建包名 services,

新建服務類TestInfoService,如下圖


TesrInfoService.java

```@Service`` 聲明了這是一個服務類。

3.3.2 關聯 Repository

如下圖,


自動關聯

因為 TestUserInfoRepository 聲明了@Repository,所以能夠使用@Autowired 進行關聯,這里要說明一點,SpringMvc 中的@Controller,@Service,@Repository 本質都是@Component,Spring-Boot 本質上能夠使用@Autowired 進行關聯的必須是有@Component聲明,或者其子繼承聲明的才行。

3.3.3 創建查詢方法

如下圖,


查詢方法

一個簡單的服務查詢類和方法。

3.4 創建 Model 實體

3.4.1 創建報名 models

TestUserInfoResponseModel用于接口返回相應 json 使用,如下圖


TestUserInfoResponseModel.java

3.5 創建 Restful 的 Controller

3.5.1 創建包名 controllers

ApiController 類,如下圖,


ApiController.java

@RestController 聲明這是一個Restful 的控制器,@RequestMapping 聲明了 url-route,是/api開頭的。

3.5.2 關聯 service

如下圖,


關聯 service

Repository 一樣,TestUserInfoService 聲明了@Service,所以他可以被@Autowired,前面講過原因了。

3.5.3 創建 aciton方法

如下圖,


action方法

@RequestMapping,聲明了 action 的 url-route,那么這個action 的完整路徑就是/api/get_user

另外,因為是 Restful 的 controller ,所以,如果不聲明@ResponseBody 的話,就必須返回一個對象實體,框架會自動序列化成一個 json。

3.5.4 創建返回 plain 字符串的action

如下圖,


plain action

聲明了@ResponseBody,接口機會以純文本的形式返回。

4. 請求測試

4.1 運行項目

4.1.1 點擊運行,看到控制輸出如下圖,


console logs

看到端口的展示,代表運行成功了。

4.1.2 請求get_user接口

地址為:http://localhost:8012/api/get_user?name=test1

get_user

4.1.3 請求 get_plain 接口

地址為:http://localhost:8012/api/get_plain?name=test1

get_plain

4.1.4 至此,Restful 的項目 Demo 創建完畢。

5. 創建動態Web項目

5.1 創建 HomeController

并且關聯service,如下圖,

HomeController

@Controller 聲明這是一個 web 的控制器,/home 是 url-route

5.2 創建 action

如下圖,


index

@RequestMapping中 value 可以多一個,空白,代表可以省略,/home/index,或者/home都是請求這個 action。

方法返回的 String,是 ViewName,比如新建一個 index.html 的模板,這里使用就是返回字符串index

參數中的 Model 是在模板中使用的 Model 實體,示例中把查詢出來的實體,裝入了 model的字典中,這樣在前臺模板就能使用。

5.3 另外一種 aciton

如果不太喜歡返回字符串,可以使用另外一種,如下圖,


ModelAndView

返回 ModelAndView,這樣自己實例化的 ModelAndView,傳入模板的名字,還有前臺需要使用的 model,就能避免返回字符串,我個人推薦使用第一種方式,會比較靈活。

5.4 創建模板頁面

/resource/templates 中創建index.html,如下圖,

index.html

因為我們使用的是thymeleaf模板,所以html 中聲明了 xmlns=th="http://www.thymeleaf.org",這樣在 html 種就能使用模板屬性去綁定數據,控制元素。

span中的 th:text=“${model?.id}”,告訴了模板,這個spantext 設置為model?.id的值。帶上?問號的意思是,model 可能為 null,這樣不會報錯,null 的時候,text 就是空。

model 就是我們在 action 傳給 model的名字,idnameage,就是 model 的字段。

5.5 運行請求

請求地址:http://localhost:8012/home/index?name=test1
如下圖,

請求訪問 index

請求另一個 aciton:
http://localhost:8012/home/test

請求訪問test

5.6 至此動態 web的示例結束


想看有料有趣的 Github 精品項目,歡迎關注我的公眾號:cool_github
或者搜索:GitHub精品推薦

GitHub精品推薦
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,925評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,819評論 25 708
  • 我是一個地道的農村孩子,家庭條件一般。雖然從來不覺得自己窮,可是沒有工作之前的日子,非常窘迫:沒有過多的生活費,沒...
    王明博閱讀 685評論 1 0
  • 妤妹喲,17歲生日快樂,感謝你當時高一的時候下的那個賭注,讓我和他這么好,哈哈哈,愛你,分開一年半咯,又過了一個春...
    1只薄荷味的小仙男閱讀 404評論 0 0