java - Spring Hateoas中如何通过注解设置资源关系?

标签 java spring spring-hateoas

有没有办法通过注解来设置资源关系?前段时间我提出了类似的问题,但我还不够清楚。我想要这样的东西:

public class UserResource {

     private String username;

     @Relation(value = "{servicebaseUrl}/classes/${value}", rel = "class")
     private String classId;

     // Getters and setters
}

然后添加一个消息转换器,仅当客户端发送 Accept = application/hal+json 时才添加链接,避免为 application/hal+json 做两个不同的 Controller 端点application/json。 Spring是否提供类似的东西?我发现它实际上提供了这个 @Relation 注释(或类似的注释),但它似乎不是出于相同的目的。

最佳答案

不,这是不可能的 - 您必须实现 ResourceAssembler 来添加资源链接。

通常您的资源扩展ResourceSupport

class PersonResource extends ResourceSupport {

  String firstname;
  String lastname;
}

然后您创建 ResourceAssembler 来控制该资源的创建:

class PersonResourceAssembler extends ResourceAssemblerSupport<Person, PersonResource> {

  public PersonResourceAssembler() {
    super(PersonController.class, PersonResource.class);
  }

  @Override
  public PersonResource toResource(Person person) {

    PersonResource resource = createResource(person);
    // … do further mapping and add links 
    resource.add(new Link("http://myhost/people"));
    return resource;
  }
}

参见 spring hateoas documentation详情

关于java - Spring Hateoas中如何通过注解设置资源关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32802806/

相关文章:

使用 jcifs 时 java.net.UnknownHostException : . .__MSBROWSE__

spring - 消耗 HATEOAS 资源

java - 在 REST Web Controller 中添加 POST/PUT/PATCH 操作的链接

Spring REST URL编码方案: %20 or + Which one?

java - Spring Data REST 将导出其所有属性(除了 id)。

java - Java中使用双冒号表达式的问题

java - 如何通过单击按钮将单独的字符串添加到数组中,并通过单击不同的按钮从数组中删除字符串?

java - 如何以编程方式获取 Java 中枚举的引用?

java - Oracle 序列可以为空吗?

AndroidAnnotations Rest 查看响应数据