java - 无法使用 Spring Boot 找到 Spring Data Rest 端点

标签 java spring rest spring-mvc spring-data-rest

我是第一次尝试 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/

相关文章:

php - Silex - 选项方法

java - 如何在 Java 中创建一个接受任意数量任意类型参数的方法?

java - 将当前游戏中的得分添加到 Android 中的长期统计数据中

java - 如何获取 Spring 中所有 session 的列表?

java - 如何使用 Java 1.5 和 jersey 1.2 公开 RESTful Web 服务,.class 文件中的版本号错误

api - 这是 RESTful 吗?

java - 并发只读HashMap

java - OSGI 同一服务的两个实例

java - 是否可以让 ObjectProvider 提供来自其他包的对象?

spring - spring 中的 application-config.xml 与 mvc-config.xml