Spring Boot:Data Rest Service

简介:

在文章RESTful by Spring Boot with MySQL通过在Controller中引入BookRepository来对外提供REST API。Spring Boot还可以通过spring-boot-starter-data-rest来对外提供REST API,可以免于编写对应的Controller,且具备分页和排序的功能。

实践

  • 在pom文件中添加依赖项
    <dependency>
       <groupId>org.springframework.boot</groupId>      
       <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
  • 在包com.test.bookpub.repository下创建AuthorRepository接口,该接口继承自PagingAndSortingRepository,并用@RepositoryRestResource注解修饰。代码如下:
package com.test.bookpub.repository;

import com.test.bookpub.domain.Author;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource
public interface AuthorRepository
 extends PagingAndSortingRepository<Author, Long> {
}
  • 可以看出,实际编写的代码很少,同样套路,为Publisher和Reviewer也添加类似的接口。
    PublisherRepository的代码如下:
package com.test.bookpub.repository;

import com.test.bookpub.domain.Publisher;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResourcepublic
interface PublisherRepository
    extends PagingAndSortingRepository<Publisher, Long> {
}

ReviewerRepository的代码如下:

package com.test.bookpub.repository;
import org.springframework.data.repository.PagingAndSortingRepository;
import com.test.bookpub.domain.Publisher.Reviewer;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResourcepublic interface ReviewerRepoistory
    extends PagingAndSortingRepository<Reviewer, Long> {
}
  • 启动应用程序,并访问http://localhost:8080/authors,将会得到如下结果

    访问author信息

分析

显然,通过继承PagingAndSortingRepository接口,比直接写Controller能提供更多的功能:分页查询和对查询结果排序。

@RepositoryRestResource注解让编程人员可以直接通过repository提供数据接口,在这个“前端负责V和C,后端负责提供数据”的时代,非常方便;并且,可以通过给该注解传入参数来改变URL。

只要在项目的classpath中包含spring-boot-starter-data-rest,同时就包含了spring-hateoas库支持,这个库可以提供ALPS元数据——一种数据格式,可以用于描述应用级别的API语义。

参考资料:

  1. ALPS主页
  2. Spring Data Rest + Spring Secuirty

    相关文章
    |
    28天前
    |
    JSON Java 网络架构
    elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
    这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
    104 4
    elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
    |
    28天前
    |
    SQL JSON Java
    mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
    这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
    47 1
    mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
    |
    1月前
    |
    存储 Java API
    如何使用 Java 记录简化 Spring Data 中的数据实体
    如何使用 Java 记录简化 Spring Data 中的数据实体
    34 9
    |
    27天前
    |
    Web App开发 JavaScript Java
    elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
    这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
    160 0
    elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
    |
    1月前
    |
    Java Spring 容器
    Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
    这篇文章讨论了在Spring Boot 3.2.1版本中,同名同类型的bean和@Service注解类之间冲突的问题得到了解决,之前版本中同名bean会相互覆盖,但不会在启动时报错,而在配置文件中设置`spring.main.allow-bean-definition-overriding=true`可以解决这个问题。
    69 0
    Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
    |
    1月前
    |
    缓存 NoSQL Java
    Springboot自定义注解+aop实现redis自动清除缓存功能
    通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
    49 2
    |
    1月前
    |
    Java API Maven
    使用 Smart-doc 记录 Spring REST API
    使用 Smart-doc 记录 Spring REST API
    36 0
    |
    2月前
    |
    Java 数据库连接 API
    【Java笔记+踩坑】Spring Data JPA
    从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
    【Java笔记+踩坑】Spring Data JPA
    |
    3月前
    |
    Java Spring 数据库
    怎样动动手指就能实现数据操作?Spring Data JPA背后的魔法揭秘
    【8月更文挑战第31天】在Java开发中,数据库交互至关重要。传统的JDBC操作繁琐且难维护,而Spring Data JPA作为集成JPA的数据访问层解决方案,提供了CRUD等通用操作接口,显著减少代码量。通过继承`JpaRepository`,开发者能轻松实现数据的增删改查,甚至复杂查询和分页也不再困难。本文将通过示例详细介绍如何利用Spring Data JPA简化数据访问层的开发,提升代码质量和可维护性。
    41 0
    |
    3月前
    |
    Java Spring
    【Azure Service Bus】使用Spring Cloud integration示例代码,为多个 Service Bus的连接使用 ConnectionString 方式
    【Azure Service Bus】使用Spring Cloud integration示例代码,为多个 Service Bus的连接使用 ConnectionString 方式