Mat*_*ana 3 java rest spring 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);
}
}
Run Code Online (Sandbox Code Playgroud)
图书实体
@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;
}
Run Code Online (Sandbox Code Playgroud)
书库
public interface BookRepository extends CrudRepository<Book, Long> {
}
Run Code Online (Sandbox Code Playgroud)
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')
}
Run Code Online (Sandbox Code Playgroud)
好的修复它我需要做的就是在我的主应用程序上添加一些用于扫描的注释。我不得不告诉它找到实体和存储库,因为它们在不同的包中。
@SpringBootApplication
@ComponentScan(basePackageClasses = {BookRepository.class})
@EntityScan(basePackageClasses = {Book.class})
@EnableJpaRepositories(basePackageClasses = {BookRepository.class})
public class SpringDataMicroServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataMicroServiceApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
在 spring boot 中,默认情况下您不需要执行@ComponentScan,@EntityScan和@EnableJpaRepositories。添加@RepositoryRestResource到您的存储库。从入门类中删除所有注释,除了@SpringBootApplication. Spring boot 默认会扫描所有包。然后您将能够找到端点localhost:8080/books。它对您不起作用,因为您只专门扫描实体类。未扫描存储库。当您删除这些注释时,将扫描所有包,我们将创建存储库 bean,并且端点将可用。
如果您使用多个包,请确保将应用程序启动器保留在基本包中。例子:
src
main
java
com.myapp.springstuff
Application.java
package1
package2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5096 次 |
| 最近记录: |