我是第一次尝试 Spring Data Rest,但我似乎无法在 localhost:8080/books
找到我的存储库端点 有人看到我配置错误了吗?
应用类
@SpringBootApplication
@ComponentScan(basePackageClasses = {Book.class})
public class SpringDataMicroServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataMicroServiceApplication.class, args);
}
}
图书实体
@lombok.Getter
@lombok.Setter
@lombok.RequiredArgsConstructor
@lombok.EqualsAndHashCode(of = "isbn")
@lombok.ToString(exclude="id")
@Entity
public class Book implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
private String isbn;
private String title;
private String author;
private String description;
}
图书资料库
public interface BookRepository extends CrudRepository<Book, Long> {
}
Gradle 构建文件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'io.spring.gradle:dependency-management-plugin:0.5.4.RELEASE'
}
}
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'
apply plugin: 'idea'
dependencyManagement {
imports {
mavenBom 'io.spring.platform:platform-bom:2.0.5.RELEASE'
}
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-aop')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-data-rest')
compile('org.springframework.data:spring-data-rest-hal-browser')
compile('org.projectlombok:lombok:1.16.6')
compile('org.springframework.retry:spring-retry')
compile('org.springframework.boot:spring-boot-starter-validation')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-ws')
compile('org.springframework.boot:spring-boot-actuator')
runtime('com.h2database:h2')
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
}
最佳答案
在 spring boot 中,默认情况下您不需要执行 @ComponentScan
、 @EntityScan
和 @EnableJpaRepositories
。将 @RepositoryRestResource
添加到您的存储库。从入门类中删除除 @SpringBootApplication
之外的所有注释。 Spring boot 默认会扫描所有包。然后您将能够找到端点 localhost:8080/books
。它对您不起作用,因为您专门只扫描实体类。未扫描存储库。当您删除这些注释时,将扫描所有包并创建存储库 bean,并且端点将可用。
如果您使用多个包,请确保将您的应用程序启动器保留在基础包中。示例:
src
main
java
com.myapp.springstuff
Application.java
package1
package2
关于java - 无法使用 Spring Boot 找到 Spring Data Rest 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37981071/