您可以尝试在 Jersey 2.3 中引入的称为实体过滤的新功能。即使实体过滤不是基于OXM_META_DATA_SOURCE
你可以用它实现你的目标:
假设您有以下域类(注释是自定义实体过滤注释):
public class Project {
private Long id;
private String name;
private String description;
@ProjectDetailedView
private List<Task> tasks;
@ProjectAnotherDetailedView
private List<User> users;
// ...
}
当然,还有一些 JAX-RS 资源,即:
@Path("projects")
@Produces("application/json")
public class ProjectsResource {
@GET
@Path("{id}")
public Project getProject(@PathParam("id") final Long id) {
return ...;
}
// ...
}
现在,我们在域类(通过注释)和资源类上定义了 2 个详细视图。如果您使用以下方法注释getProject
资源方法:
- @ProjectDetailedView - 返回的实体将包含来自Project
id
的列表name
description
tasks
- @ProjectAnotherDetailedView - 返回的实体将包含来自Project
id
的列表name
description
users
如果您将资源方法保留为未注释,则生成的实体将仅包含:id
, name
, description
。
您可以在用户指南中找到有关实体过滤的更多信息,也可以在我们的示例中直接尝试:实体过滤。
注意 1:实体过滤目前仅适用于 JSON 媒体类型(通过 MOXy)。计划在未来添加对其他媒体类型/提供商的支持。
注 2: Jersey 2.3 未集成到任何(升级的)GF 4.0 版本中。应该成为 GF 4.0 一部分的下一个 Jersey 版本是 2.4。我们计划在接下来的几周内发布 2.4。