rest-demo

本模块主要演示了对数据库的增删改查等操作。

  1. 采用嵌入式的H2数据库
  2. 使用Spring Data JPA进行数据持久化
  3. 通过Spring Data Rest将Spring Data JPA的Repository自动转换成REST服务
  4. 引入the HAL Browser,便于可视化测试
url desc
http://localhost:8082/h2 访问h2控制台
http://localhost:8082/api 返回接口清单

配置H2数据库

  • 引入Maven依赖

    com.h2database
    h2
    runtime

  • 配置数据源等参数
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:file:~/.h2/test
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

# 启用H2控制台
spring.h2.console.enabled=true
# 设置H2控制台访问路径
spring.h2.console.path=/h2

配置Spring Data JPA

  • 引入Maven依赖

    org.springframework.boot
    spring-boot-starter-data-jpa

  • 定义实体类
@Entity
public class User {    
    @Id
    @GeneratedValue
    private Integer id;    
    private String name;
    private String address;

    ...
}
  • 定义仓库接口

增加@RepositoryRestResource注解,可通过path自定义Repository访问路径

@RepositoryRestResource(path = "user")
public interface UserRepository extends JpaRepository<User, Integer> {    
    User findByName(@Param("name") String name);    
    List<User> findByAddress(@Param("address") String address);    
}

配置Spring Data REST

  • 引入Maven依赖

    org.springframework.boot
    spring-boot-starter-data-rest

当然,也可直接引入the HAL Browser依赖,这样,测试起来将会更方便、更直观。


    org.springframework.data
    spring-data-rest-hal-browser

  • 配置REST相关参数

非必须

spring.data.rest.basePath = /api
  • 配置获取主键ID

默认情况下,接口查询是不会返回主键ID的;如果希望获取主键,可增加如下配置:

@Configuration
public class RepositoryConfig extends RepositoryRestConfigurerAdapter {
    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(User.class);
        config.exposeIdsFor(Department.class);
    }
}

运行截图

  • Spring Data REST

Spring Data REST

  • the HAL Browser

the HAL Browser

  • H2 Console

H2 Console