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

前言

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

1. 項目建立

1.1 使用腳手架生成項目

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

start.spring.io

2. 項目配置

2.1 配置 application.properties

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

#服務端口 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.javaweb

2.2.1 添加註解@ComponentScan

組件掃描,若是不添加,可能沒法正確的@Autowiredspring

2.2.2 添加註解@Configuration

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

2.2.3 完成後的樣子

以下圖:數據庫


DemoApplication

3. Resftful 接口的示例

3.1 添加數據表的 Entity 實體類

3.1.1假設有一個數據表test_user_info

結構以下圖 :json


表結構

插入一些測試數據:api


測試數據

3.1.2 新建包名 entities

其中新建 Entity 實體 TestUserInfo,完整以下圖:
spring-mvc

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的示例結束

做者:mcjiffy 連接:https://www.jianshu.com/p/512f84c439d8 來源:簡書
相關文章
相關標籤/搜索