我在hateoas:1.0中实现了这段旧代码
public class StaticPathLinkBuilder extends LinkBuilderSupport<StaticPathLinkBuilder> {
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponentsBuilder builder) {
return new StaticPathLinkBuilder(builder);
}
我更新了我的代码到hateoas 2.6.7,但代码是这样改变的:
public class StaticPathLinkBuilder extends LinkBuilderSupport<StaticPathLinkBuilder> {
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponents components, List<Affordance> affordances) {
return null;
}
实现这一变化的正确方法是什么?我试过了:
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponents components, List<Affordance> affordances) {
return new StaticPathLinkBuilder(UriComponentsBuilder.newInstance().uriComponents(components));
}
但是我不清楚如何实现我可以发送affordances
的代码。
你能建议什么是正确的方法来实现这一点吗?
您可以在其源代码中看到,LinkBuilderSupport
已经提供了一个构造函数,其中包含两个必需的参数,UriComponents
和List<Affordance>
。
在自己的库代码库中,不同的LinkBuilder
实现,如BasicLinkBuilder
或TemplateVariableAwareLinkBuilderSupport
,已经在其实现中利用了这一事实。
在您的用例中,您可以尝试这样做:
public class StaticPathLinkBuilder extends LinkBuilderSupport<StaticPathLinkBuilder> {
private StaticPathLinkBuilder(UriComponents components, List<Affordance> affordances) {
super(components, affordances);
}
@Override
protected StaticPathLinkBuilder createNewInstance(UriComponents components, List<Affordance> affordances) {
return new StaticPathLinkBuilder(components, affordances);
}
}