所以,首先,如果对细节有点了解,我会道歉,但是我已经把头发整理了一整天,并且没有能够在没有运气的情况下在这个项目之外重现这个问题,并且真的希望社区可以帮助至少指向启动调试过程的位置。
基本上,我正在将一个项目从一个非常古老的(1.28)版本的Spring启动更新到当前的2.04,除了某些原因外,一切似乎都有效,Spring-hateoas似乎没有正确地呈现链接。我设置了一个非常简单的控制器方法
@RestController
@RequestMapping("/hello")
public class HateoasTestController {
public static class Greeting extends ResourceSupport{
private final String name;
public Greeting(String name) {
this.name = name;
add(linkTo(ControllerLinkBuilder.methodOn(HateoasTestController.class).greet(name)).withSelfRel());
}
public String getName() {
return name;
}
}
@RequestMapping(value="/{name}" ,method=RequestMethod.GET)
public Greeting greet(@PathVariable("name")String name){
return new Greeting(name);
}
}
哪个呈现为
{"name":"peter","link":{"self":[{"href":"http://localhost:6789/hello"}]}}
在旧版本的服务中,它将呈现为
{"name":"peter","_links":{"self":[{"href":"http://localhost:6789/hello"}]}}
因此,看起来,由于某种原因,响应不会被序列化为HAL。我试图遵循Jackson2Hal模块的代码流程,它确实被触发了,但是很难弄清楚魔法应该发生在哪里。所以我想,我的基本问题是,如果有一个明显的地方可以设置一个断点,那么为什么结果不能按预期呈现呢?当然,如果有什么东西是愚蠢的,我错过了或者我能提供的任何更多细节都是相关的。基本上,欢迎任何帮助
我是个白痴。事实证明我在jacksonobjectmapper构建器中启用了findModulesViaServiceLoader(true),由于某种原因导致它失败。