有没有办法通过注解来设置资源关系?前段时间我提出了类似的问题,但我还不够清楚。我想要这样的东西:
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;
}
}
关于java - Spring Hateoas中如何通过注解设置资源关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32802806/