我将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
不再存在。我没有找到有关此更改的任何参考。任何提示如何解决该问题?
答案 0 :(得分:1)
我这样修复:
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())));
}