HATEOAS链接和方法性能

时间:2014-11-21 10:05:32

标签: hateoas spring-hateoas

我们正在使用HATEOAS产生很好的效果,但是我们一直在关注性能并从链接的构建中获得非常差的结果,即看起来像这样的代码

resource.add(linkTo(methodOn(SomeController.class).findAll())).withSelfRel());

结果(我不关心尺寸,但无论如何都记录在下面)

Enabled links - ~438ms - 201 kb
Disable links - ~193ms - 84.6 kb

尺寸是由于我们为每个资源分配了8个链接,所以我们预计尺寸,但速度不会减慢。

我返回的每个对象大约2ms用于构建链接大约需要232ms(在此特定测试中有100个对象)

反正有加速吗?我们可以在toResources调用中为所有请求预先获取URI,然后在toResource中对其进行调整吗?

1 个答案:

答案 0 :(得分:1)

我查看了linkTo(methodOn())周围的代码,它看起来像很多AOP魔法。每次为目标接口调用methodOn时,都会生成代理。

我的感觉是,当您想要避免硬编码URI时,这非常适合测试。 EntityLinks提供了一种更有效的替代方案。但它没有ControllerLinkBuilder那么强大。

另一种方法是将Helper类与EntityLinks结合使用。 spring-restbucks项目包含一个很好的示例 - PaymentLinks class

但说实话 - 很难与ControllerLinkBuiler提供的便利性竞争。

编辑:请参阅我的回答here,以便更详细地比较链接构建器的效果。