怎么用Spring Initializr创建Springboot项目
本篇内容介绍了"怎么用Spring Initializr创建Springboot项目"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.简介
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。
2 举个例子
我们用例子来感受一下吧。
2.1 创建项目
我们通过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中依赖如下:
2.2 实体类
创建一个实体类User,如下所示:
package com.pkslow.rest.entity;
import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String name; private Integer age; private String email; //getter & setter}2.3 Repository接口定义
定义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{}
注解RepositoryRestResource是Data REST用于暴露Repository,path为访问路径,设置为user,则访问地址为http://localhost:8080/user。
2.4 启动访问
准备好以上代码,直接启动Springboot应用即可,我们把端口设置为8080
3 更多探索
3.1 分页及排序功能
可以快速实现分页及排序功能,只需要把Repository的父接口改为PagingAndSortingRepository即可,如下所示:
@RepositoryRestResource(path = "user") public interface UserRepository extends PagingAndSortingRepository
其实就是多了两个方法findAll(Sort var1)和findAll(Pageable var1),如下所示:
public interface PagingAndSortingRepository
PagefindAll(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微课)
3.2 事件监听
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;@Componentpublic class PkslowEventListener extends AbstractRepositoryEventListener{ @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 那些事)
3.3 路径
默认基础路径是/,可以通过spring.data.rest.base-path=api进行配置,这样就变成了localhost:8080/api/user。
4 集成HAL Browser查看
HAL Browser是一个专门用于浏览基于JSON Hypertext Application Language的前端工具。我们前面已经提供了HATEOAS风格的RESTful服务,HAL Browser可以方便查看。
加入依赖:
启动后访问http://localhost:8080/browser/index.html#/
"怎么用Spring Initializr创建Springboot项目"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!