如何将Spring Boot @RepositoryRestResource映射到特定URL?

str*_*ear 12 java configuration spring spring-data spring-boot

我似乎无法在以下任何位置映射我的存储库:

@RepositoryRestResource(collectionResourceRel = "item", path = "item")
public interface ItemRepository extends PagingAndSortingRepository<Item, Long> {
Run Code Online (Sandbox Code Playgroud)

我以为我可以用:

 path = "/some/other/path/item"
Run Code Online (Sandbox Code Playgroud)

但映射无法解决.我明白了:

HTTP ERROR 404

Problem accessing /some/other/path/item. Reason:

Not Found
Run Code Online (Sandbox Code Playgroud)

在spring-data中,javadoc path定义为:"用于导出此资源的路径段."

我究竟做错了什么?

小智 12

您需要扩展RepositoryRestMvcConfiguration并覆盖configureRepositoryRestConfiguration(RepositoryRestConfiguration config)以设置您的baseUri.例如

@Configuration
public class MyRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration {

    private static final String MY_BASE_URI_URI = "/my/base/uri";

    @Override
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        super.configureRepositoryRestConfiguration(config);
        config.setBaseUri(URI.create(MY_BASE_URI_URI));
    }
}
Run Code Online (Sandbox Code Playgroud)


Bru*_*dge 12

要更改基URI,您还可以将其添加到application.properties:

spring.data.rest.base-path=/my/base/uri
Run Code Online (Sandbox Code Playgroud)


小智 5

正确的应用特性如下: spring.data.rest.base-path=/my/base/path base-path代替base-uri


Dav*_*yer 0

我认为路径属性用于指定路径(因此没有斜杠)。“/some/other/path”必须是 servlet 路径或上下文路径(即与 Spring Data 无关)。