Spring Boot 開發項目基本步驟,提醒大家,一定要有耐心去看Spring 官網的技術文檔,每次閱讀技術文檔都會有不同的感受和收獲。
Spring Boot 學習地址:https://spring.io/projects/spring-boot
在Spring 官網上可以下載一些小的Demo,在開發工具中做簡單的配置就可以跑起來了,但是到底是如何實現的呢,對於新手來說,還是需要仔細研究一下源碼的。
開發工具:IDEA
數據庫:MySQL
JDK: 1.8
項目名稱:demo
Maven:3.39
1,MySQL 數據庫准備,要求本地 localhost 能訪問到數據庫表,對表的操作這里就不多說了,自行百度。
2,IDEA 開發工具准備,自行下載安裝。
3,JDK 安裝。
4,Maven 安裝。
下面使用Spring Boot 開發一個Maven 項目。
IDEA ->File>New->Project->Spring Assistant->Next->(自定義項目的信息)->Next->(選擇:Spring Boot DevTools, Lombok, Spring Configuration Processor, Spriing Web, Spring Data JPA, MySQL Driver)Finish.
配置數據庫連接池信息:將src->main->resources->application.proporties 改成 application.yml 后綴名。內容為:
spring:
datasource:
url: "jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=false"
username: "root"
password: "123456"
jpa:
open-in-view: false
format-sql: true
新建MainController.java,User.java,UserRepository.java,UserService.java,UserVo.java
UserRepository 接口繼承了JpaRepository.JpaSpecificationExecutor 接口,實現分頁查詢,和封裝查詢條件,通過Spring-data-jpa 實現數據庫操作。
User.java 實體類,通過@Entity 注解,Hibernate 將實體類與數據庫表實現映射,@Table 注解指定實體類對應的表,如何不指定,默認以類名與數據庫表匹配。
UserService.java 做業務邏輯處理,將從接口查詢的數據做處理,注意:PageResult 是我自己定義的數據封裝類,也可以用List<UserVo>返回。
最后是MainController.java,做http 請求響應的類,
啟動DemoApplication.java 類,在瀏覽器輸入:localhost:8080/demo/all 回車,就能看到 t_user 表中的數據。
以上是一個快速簡單的Spring boot 的一個demo,下面是學習Spring boot 實現原理的記錄:
第一、pom.xml文件解說
首先我們看到項目的根目錄下的pom.xml文件,
pom.xml文件必須要加上這個 parent節點, spring-boot-parent是干什么的呢,我們點進去發現它什么也沒做,而是向上繼承了dependencies,
我們再點擊dependencies, 進去看到了很多信息,添加了很多Spring boot 開發中需要用的maven倉庫的jar包及版本信息,包括一些插件的信息和版本號。回到項目的pom.xml文件中,
看到我們這里的dependency 的內容,都是省略了版本號的,因為在parent 下的dependencies 中已經做了版本的管理,因而我們在這里就縮減了一些代碼。這是Spring boot 的特性之一,我們也可以不通過依賴parent 和dependencies, 那我們就得一一指定jar包和版本號了,比較麻煩,我目前沒有試過,感興趣可以嘗試一下。
第二、SpringApplication解說
我們看到項目的src/main/java包下的SpringBootAppliction.java 入口文件,也就是有main方法的文件。這個文件必須放在整個項目的最根目錄,Spring 在掃描注解的時候掃描這個文件所在包下的所有class,如果其他類放在了高於這個類或其他目錄下就會掃描不到。