文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用Spring Initializr创建Springboot项目

2023-06-27 10:42

关注

本篇内容介绍了“怎么用Spring Initializr创建Springboot项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.简介

SpringbootSpring MVC 简化了web应用中的RESTful开发,然而还有一种更简单的,那就是Spring Data RESTSpring Data REST 建立在Data Repository之上,它可以直接把resositoryHATEOAS风格暴露成Web服务,就不需要再手写Controller层。

Spring Data REST支持Spring Data JPASpring Data MongoDBSpring Data Neo4jSpring Data GenFireSpring Data Cassandra,这里选择大家比较熟悉的JPA

2 举个例子

我们用例子来感受一下吧。

2.1 创建项目

我们通过Spring Initializr来快速创建Springboot项目。选中的依赖组件如下:

(推荐课程: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>

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<User, Integer> {}

注解RepositoryRestResourceData REST用于暴露Repositorypath为访问路径,设置为user,则访问地址为http://localhost:8080/user

2.4 启动访问

准备好以上代码,直接启动Springboot应用即可,我们把端口设置为8080

3 更多探索

3.1 分页及排序功能

可以快速实现分页及排序功能,只需要把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微课)

3.2 事件监听

REST提供了8个基于Repository的事件,如下:

添加一个自定义事件如下:

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<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 那些事)

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可以方便查看。

加入依赖:

<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项目”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯