java - Spring HATEOAS 1.0,删除了 BaseUriLinkBuilder

标签 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似乎不再存在了。我没有找到任何有关此更改的引用。有任何提示如何解决该问题吗?

最佳答案

我是这样修复的:

    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/

相关文章:

java - Gradle 构建失败

java - 接受字符串而不丢失换行符,直到按下 -1

spring-mvc - Spring Webflux 和 Observable 响应不起作用

multithreading - 如何自定义SecurityContextPersistenceFilter的行为?

java - 在 Java 8 中使用列表值 Map<Key, List<Value>> 将 Map 反转为 Map <Value, Key>

java - 为什么使用jsp :useBean here but not just create a new object?

java - 使用 Spring (Java) 的数据模型和 REST Controller 的 Multi-Tenancy 权限模型

java - 无法找到 XML 模式命名空间的 Spring NamespaceHandler

java - Spring、Hibernate 和 JPA : Calling persist on entitymanager does not seem to commit to database

java - 如何使用 Spring Boot 在后端跟踪文件下载进度?