您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用Spring Initializr創建Springboot項目”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Springboot
和 Spring MVC
簡化了web
應用中的RESTful
開發,然而還有一種更簡單的,那就是Spring Data REST
。Spring Data REST
建立在Data Repository
之上,它可以直接把resository
以HATEOAS
風格暴露成Web
服務,就不需要再手寫Controller
層。
HATEOAS
,即Hypermedia as the Engine of Application State
,它是一種更成熟的REST
模型,在資源的表達中包含了鏈接信息,客戶端可以根據鏈接來發現可執行的動作。
Spring Data REST
支持Spring Data JPA
、Spring Data MongoDB
、Spring Data Neo4j
、Spring Data GenFire
、Spring Data Cassandra
,這里選擇大家比較熟悉的JPA
。
我們用例子來感受一下吧。
我們通過Spring Initializr
來快速創建Springboot
項目。選中的依賴組件如下:
(1)Spring Web:提供Web服務;
(2)Rest Repositories:提供Spring Data REST
的支持;
(3)Spring Data JPA:通過JPA
提供Repository
方式的數據訪問;
(4)H2 Database:H2數據庫,為了方便簡潔,使用該數據庫。
(推薦課程:Spring教程)
導入后對應的pom.xml
中依賴如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>com.h3database</groupId> <artifactId>h3</artifactId> <scope>runtime</scope> </dependency>
創建一個實體類User,如下所示:
package com.pkslow.rest.entity;
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String name; private Integer age; private String email; //getter & setter }
定義Repository
接口用于操作數據庫,如下所示:
package com.pkslow.rest.repo;
import com.pkslow.rest.entity.User; import org.springframework.data.repository.CrudRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; @RepositoryRestResource(path = "user") public interface UserRepository extends CrudRepository<User, Integer> { }
注解RepositoryRestResource
是Data REST
用于暴露Repository
,path
為訪問路徑,設置為user
,則訪問地址為http://localhost:8080/user
。
準備好以上代碼,直接啟動Springboot
應用即可,我們把端口設置為8080
可以快速實現分頁及排序功能,只需要把Repository
的父接口改為PagingAndSortingRepository
即可,如下所示:
@RepositoryRestResource(path = "user") public interface UserRepository extends PagingAndSortingRepository<User, Integer> { }
其實就是多了兩個方法findAll(Sort var1)
和findAll(Pageable var1)
,如下所示:
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> { Iterable<T> findAll(Sort var1);
Page<T> findAll(Pageable var1); }
查詢http://localhost:8080/user?page=1&size=2&sort=id,desc,表示查詢第二頁,每頁2條記錄,以ID倒序展示。如下:
{ "_embedded": { "users": [ { "name": "pkslow.com", "age": 18, "email": "pkslow@pkslow.com", "_links": { "self": { "href": "http://localhost:8080/user/33" }, "user": { "href": "http://localhost:8080/user/33" } } }, { "name": "pkslow.com", "age": 18, "email": "pkslow@pkslow.com", "_links": { "self": { "href": "http://localhost:8080/user/32" }, "user": { "href": "http://localhost:8080/user/32" } } } ] }, "_links": { "first": { "href": "http://localhost:8080/user?page=0&size=2&sort=id,desc" }, "prev": { "href": "http://localhost:8080/user?page=0&size=2&sort=id,desc" }, "self": { "href": "http://localhost:8080/user?page=1&size=2&sort=id,desc" }, "next": { "href": "http://localhost:8080/user?page=2&size=2&sort=id,desc" }, "last": { "href": "http://localhost:8080/user?page=17&size=2&sort=id,desc" }, "profile": { "href": "http://localhost:8080/profile/user" } }, "page": { "size": 2, "totalElements": 35, "totalPages": 18, "number": 1 } }
可以發現page
是從0開始的,1表示第二頁;返回結果還提供了第一頁、上一頁、本頁、下一頁、最后一頁的鏈接;以及分頁信息。
(推薦微課:Spring微課)
REST
提供了8個基于Repository
的事件,如下:
BeforeCreateEvent
AfterCreateEvent
BeforeSaveEvent
AfterSaveEvent
BeforeLinkSaveEvent
AfterLinkSaveEvent
BeforeDeleteEvent
AfterDeleteEvent
添加一個自定義事件如下:
package com.pkslow.rest.event;
import com.pkslow.rest.entity.User; import org.springframework.data.rest.core.event.AbstractRepositoryEventListener; import org.springframework.stereotype.Component; @Component public class PkslowEventListener extends AbstractRepositoryEventListener<User> { @Override public void onBeforeCreate(User entity) { System.out.println("pkslow creating:" + entity); } @Override public void onBeforeSave(User entity) { System.out.println("pkslow saving:" + entity); } @Override public void onAfterDelete(User entity) { System.out.println("pkslow deleted:" + entity); } }
分別執行了增加、修改、刪除后,日志如下:
pkslow creating:User{id=null, name='pkslow.com', age=18, email='pkslow@pkslow.com'} pkslow saving:User{id=32, name='pkslow.com', age=20, email='pkslow@pkslow.com'} pkslow deleted:User{id=14, name='pkslow.com', age=18, email='pkslow@pkslow.com'}
說明事件成功執行,結合這個功能,可以實現很多業務邏輯,如刪除后記錄操作日志,并刪除其它相關數據。
(推薦教程:Spring Boot 那些事)
默認基礎路徑是/
,可以通過spring.data.rest.base-path=api
進行配置,這樣就變成了localhost:8080/api/user
。
HAL Browser
是一個專門用于瀏覽基于JSON Hypertext Application Language
的前端工具。我們前面已經提供了HATEOAS
風格的RESTful
服務,HAL Browser
可以方便查看。
加入依賴:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest-hal-browser</artifactId> <version>3.3.2.RELEASE</version> </dependency>
啟動后訪問http://localhost:8080/browser/index.html#/
“怎么用Spring Initializr創建Springboot項目”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。