我将 Spring Boot 项目更新到版本 2.2。我正在使用 HATEAOS,因此我必须按照此处所述转换应用程序的多个部分 https://spring.io/blog/2019/03/05/spring-hateoas-1-0-m1-released
我只有 BaseUriLinkBuilder
有问题。我上过这门课:
/**
* Utility class that fix the URI created adding the base path.
* {@linkplain "https://github.com/spring-projects/spring-hateoas/issues/434}"
*
* @author Daniele Renda
*/
@Service
@Log4j2
public class BasePathAwareLinks {
private final URI contextBaseURI;
private final URI restBaseURI;
@Autowired
public BasePathAwareLinks(ServletContext servletContext, RepositoryRestConfiguration config) {
contextBaseURI = URI.create(servletContext.getContextPath());
restBaseURI = config.getBasePath();
}
public WebMvcLinkBuilder underBasePath(WebMvcLinkBuilder linkBuilder) {
try {
URI uri = linkBuilder.toUri();
URI origin = new URI(uri.getScheme(), uri.getAuthority(), null, null, null);
URI suffix = new URI(null, null, uri.getPath(), uri.getQuery(), uri.getFragment());
return BaseUriLinkBuilder.create(origin).slash(contextBaseURI).slash(restBaseURI).slash(suffix);
} catch (URISyntaxException e) {
log.error("", e);
}
return null;
}
}
但是BaseUriLinkBuilder
似乎不再存在了。我没有找到任何有关此更改的引用。有任何提示如何解决该问题吗?
最佳答案
我是这样修复的:
import org.springframework.hateoas.server.mvc.BasicLinkBuilder;
public LinkBuilder underBasePath(WebMvcLinkBuilder linkBuilder) {
return BasicLinkBuilder.linkToCurrentMapping()
.slash(restBaseURI)
.slash(contextBaseURI.relativize(URI.create(linkBuilder.toUri().getPath())));
}
关于java - Spring HATEOAS 1.0,删除了 BaseUriLinkBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461899/