对于最新的稳定版本,请使用 Spring Data REST 4.4.0! |
自定义 JSON 输出
有时,在您的应用程序中,您需要提供指向特定实体中其他资源的链接。例如,响应可能会包含指向当前购物车的链接或用于管理与该实体相关的资源的链接。Spring Data REST 提供与 Spring HATEOAS 的集成,并提供一个扩展钩子,允许您更改发送到客户端的资源的表示形式。Customer
界面RepresentationModelProcessor
Spring HATEOAS 定义了一个用于处理实体的接口。Spring Data REST exporter 会自动选取所有类型的 bean,并在序列化 type of of entity 时触发。RepresentationModelProcessor<>
RepresentationModelProcessor<EntityModel<T>>
T
例如,要为实体定义处理器,请将类似于以下内容(取自 Spring Data REST 测试)添加到您的:Person
@Bean
ApplicationContext
@Bean
public RepresentationModelProcessor<EntityModel<Person>> personProcessor() {
return new RepresentationModelProcessor<EntityModel<Person>>() {
@Override
public EntityModel<Person> process(EntityModel<Person> model) {
model.add(new Link("http://localhost:8080/people", "added-link"));
return model;
}
};
}
前面的示例对指向 .如果你的应用程序内有一个 Spring MVC 端点,你希望链接到它,请考虑使用 Spring HATEOAS 的 linkTo(...) 方法来避免管理 URL。localhost:8080/people |
自定义表示
Spring Data REST 导出器在创建输出表示之前运行任何发现的实例。它通过向内部 .这是负责创建指向引用实体的链接(例如对象的 JSON 表示形式中属性下的那些对象)的组件。它采用 an 并迭代其属性,为由 a 管理的属性创建链接,并在任何嵌入或简单属性之间进行复制。RepresentationModelProcessor
Converter<Entity, EntityModel>
ConversionService
_links
@Entity
Repository
但是,如果您的项目需要以其他格式输出,则可以将默认的传出 JSON 表示形式完全替换为您自己的表示形式。如果您在 和 register your own 中注册自己的 ,则可以返回您选择的实现。ConversionService
ApplicationContext
Converter<Entity, EntityModel>
EntityModel