春季HATEOAS 1.0,BaseUriLinkBuilder被删除

时间:2019-10-19 08:37:06

标签: java spring spring-boot spring-data-rest spring-hateoas

我将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不再存在。我没有找到有关此更改的任何参考。任何提示如何解决该问题?

1 个答案:

答案 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())));
}