Spring REST 数据

Spring REST Data

我正在尝试使用文档中的演示应用程序公开 Spring REST 数据:

package hello;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String> {

    List<Person> findByLastName(@Param("name") String name);

}

通过使用示例中找到的依赖项,我无法找到 RepositoryRestResource:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.3.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
    </dependencies>

根据 Netbeans 的建议,我添加了以下依赖项:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-core</artifactId>

    <type>jar</type>
    <version>2.3.0.RELEASE</version>
</dependency>

现在代码可以编译,但是执行失败:

Caused by: java.lang.NoClassDefFoundError: org/springframework/data/rest/core/invoke/RepositoryInvokerFactory
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
    at java.lang.Class.getDeclaredMethods(Class.java:1855)
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:488)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474)
    at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:534)

知道如何解决吗?

您应该能够删除额外的依赖项,因为 SpringBoot 的 REST 启动器已经引入了正确版本中的所有依赖项。

Spring Boot 1.2.3 指的是 Spring 数据火车 Evans 在其第二个服务版本中。这归结为 Spring Data REST 2.2.2。如果您想升级到较新的发布版本(例如 Fowler),请将 spring-data-releasetrain.version 属性 的值更改为 Fowler-GA。然后将 Spring Data REST 升级到 2.3.0,并确保您在匹配版本中获得所有必需的依赖项。