Spring Rest Data是建立在Spring Data下的一个子项目。

它存在的目的在于简化开发流程,因为它直接把resository以HATEOAS风格暴露成Web服务,而不需要再手写Controller层。

使用前,需要在POM添加如下依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

Repository的接口也有两层:CrudRepository, PagingAndSortingRepository.

public interface CrudRepository<T, ID extends Serializable>
    extends Repository<T, ID> {
    <S extends T> S save(S entity); 
    T findOne(ID primaryKey);       
    Iterable<T> findAll();          
    Long count();                   
    void delete(T entity);          
    boolean exists(ID primaryKey);  
    // ...
}
public interface PagingAndSortingRepository<T, ID extends Serializable>
  extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

然而,这种很便捷的库,要融入一些别的需求,就很麻烦。譬如:权限,数据校验等; 所以,实际项目中Spring Data REST开发的相对较少。

知乎上有一段评论,写得非常好,就不复制了(版权归于原作者)。

Zhihu