一 点睛
1 什么是Spring Data REST
Spring Data JPA是基于Spring Data的Repository之上,可以将Repository自动输出为REST资源。目前Spring Data REST支持将Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j、Spring Data Gemfire以及Spring Data Cassandra的Repository自动转换为REST服务。
2 Spring MVC中配置使用Spring Data REST
Spring Data REST的配置是定义在RepositoryRestMvcConfiguration配置类中,我们可以通过继承此类或者直接在自己的配置类上@Import此配置类
二 Spring Boot对Spring Data REST的支持
Spring Boot对Spring Data REST的自动配置放置在Rest中
1 SpringBootRepositoryRestMvcConfiguration源码分析
@Configuration
class SpringBootRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration {
@Autowired
private RepositoryRestProperties properties;
//自动配置了RepositoryRestConfiguration
@Bean
@Override
public RepositoryRestConfiguration config() {
RepositoryRestConfiguration config = super.config();
this.properties.applyTo(config);
return config;
}
}
2 在Spring Boot中使用Spring Data REST只需要引入spring-boot-starter-data-rest的依赖,无须任何配置即可实现
3 Spring Boot在application.properties中配置以“spring.data.rest”为前缀的属性来配置RepositoryRestConfiguration,参考下面代码
@ConfigurationProperties("spring.data.rest")
public class RepositoryRestProperties {
/**
* Base path to be used by Spring Data REST to expose repository resources.
*/
private String basePath;
/**
* Default size of pages.
*/
private Integer defaultPageSize;
/**
* Maximum size of pages.
*/
private Integer maxPageSize;
/**
* Name of the URL query string parameter that indicates what page to return.
*/
private String pageParamName;
/**
* Name of the URL query string parameter that indicates how many results to return at
* once.
*/
private String limitParamName;
/**
* Name of the URL query string parameter that indicates what direction to sort
* results.
*/
private String sortParamName;
/**
* Content type to use as a default when none is specified.
*/
private MediaType defaultMediaType;
/**
* Return a response body after creating an entity.
*/
private Boolean returnBodyOnCreate;
/**
* Return a response body after updating an entity.
*/
private Boolean returnBodyOnUpdate;
/**
* Enable enum value translation via the Spring Data REST default resource bundle.
* Will use the fully qualified enum name as key.
*/
private Boolean enableEnumTranslation;
}