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

时间:2014-07-04 15:26:36

标签: java spring configuration spring-data spring-boot

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

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

我以为我可以使用:

 path = "/some/other/path/item"

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

HTTP ERROR 404

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

Not Found

在spring-data中,javadoc path被定义为:"The path segment under which this resource is to be exported."

我做错了什么?

5 个答案:

答案 0 :(得分:12)

您需要延长RepositoryRestMvcConfiguration并覆盖configureRepositoryRestConfiguration(RepositoryRestConfiguration config)以设置您的baseUri。 e.g。

@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));
    }
}

答案 1 :(得分:11)

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

spring.data.rest.base-path=/my/base/uri

答案 2 :(得分:5)

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

答案 3 :(得分:2)

在春季靴子2

@Configuration
public class RepositoryConfiguration extends RepositoryRestConfigurerAdapter
{

   @Override
   public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config)
   {
      config.setBasePath("/my/base/uri");
   }
}

答案 4 :(得分:0)

我认为path属性用于指定路径 segment (所以没有斜杠)。 &#34; / some / other / path&#34;必须是servlet路径或上下文路径(即与Spring Data无关)。