2014-11-21 57 views
5

我们正在使用HATEOAS有很大的影响。然而,我们一直在寻找性能和链接的建设,即代码看起来像这样HATEOAS Link和方法的性能

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

结果(我已经非常糟糕的结果我不关心大小,但下面的记录无论如何)

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

大小是由于我们扑灭每个资源8个环节,所以我们预期的大小,而不是速度慢了下来。

大约232ms都花在构建链接每个对象大约2ms的我返回(在这个特殊的测试100名对象)

反正是有加快这?例如,我们可以在toResources调用中预先获得所有请求的URI,然后在toResource中调用它?

+0

切换到不使用methodOn,而是提供一个Controller.class,Method,Params将成本降低到〜306ms – 2014-11-21 11:03:14

+0

您究竟在测量什么? – zeroflagL 2014-11-21 20:46:50

+0

我认为上面清楚是不是?创建指向控制器方法的链接的时间量? – 2014-11-24 08:25:35

回答

1

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

我的感觉是,当你想要避免硬编码的URI时,这对测试非常有用。 EntityLinks提供了一个应该更有效的替代方案。但它不如ControllerLinkBuilder那么强大。

另一种方法是使用助手类与EntityLinks的组合。 spring-restbucks项目包含一个很好的例子 - PaymentLinks class

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

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

+0

请参阅http://stackoverflow.com/a/36326559/5371736 – 2017-02-13 10:46:15