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,并确保您在匹配版本中获得所有必需的依赖项。
我正在尝试使用文档中的演示应用程序公开 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,并确保您在匹配版本中获得所有必需的依赖项。