2016-06-23 3 views
0

스프링 데이터 나머지를 처음 시도했지만, 내 저장소 엔드 포인트를 찾지 못했습니다. localhost:8080/books 구성이 잘못된 것을 누가 볼 수 있습니까?스프링 부트로 엔드 포인트를 찾을 수 없음

Application 클래스

@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; 
} 

BookRepository

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') 
} 

답변

1

, 기본적으로 당신은 @ComponentScan, @EntityScan 및 @EnableJpaRepositories을 수행 할 필요가 없습니다. @RepositoryRestResource를 저장소에 추가하십시오. @SpringBootApplication을 제외한 모든 주석을 스타터 클래스에서 제거하십시오. 스프링 부트는 기본적으로 모든 패키지를 검사합니다. 그런 다음 localhost : 8080/books 엔드 포인트를 찾을 수 있습니다. 엔티티 클래스 만 구체적으로 스캔했기 때문에 작동하지 않았습니다. 저장소가 검색되지 않았습니다. 이러한 주석을 제거하면 모든 패키지가 스캔되고 저장소 bean이 완성되어 엔드 포인트를 사용할 수 있습니다.

여러 패키지를 사용하는 경우 기본 패키지에 응용 프로그램 시작 프로그램을 유지해야합니다. 예 :

src 
    main 
     java 
      com.myapp.springstuff 
       Application.java 
       package1 
       package2 
+0

흥미롭게도 나는 그것을 잘 잘라내려고 노력할 것입니다. 스프링 부트가 모든 것을 찾으면 주석. 이것을 시험 할 때까지 기다릴 수 없습니다. –

+0

시험해 보셨습니까? –

+0

몇 가지 테스트가 끝난 후에 필자는 꼭 주석이 필요하다. 현재 패키지와 응용 프로그램 및 도메인이 있습니다. 이 세 가지 주석이 없으면 나는 책에 관한 어떤 끝점도로드하지 않는다. 구성 요소 검사를 제거 할 수있는 것처럼 보이지만 저장소 나 JpaRepositories를 제거하면 문제가 발생합니다. –

0

/books (@RequestMapping("/books"))에 대한 GET 요청을 Book 엔터티를 데이터베이스에서 검색하는 Java 메서드에 라우팅하는 리소스 컨트롤러 (@RestController)가 누락되었습니다.

리소스 컨트롤러를 만듭니다here for more details.

+0

Spring Data Rest를 사용하면 내 엔티티 모델을 기반으로 나머지 컨트롤러가 생성됩니다. 그러나 어딘가 내 구성이 잘못되어있는 것처럼 보입니다. –

+0

당신은 맞습니다. @MatthewFontana, 컨트롤러가 없다는 예를 보시오. https://github.com/spring-projects/spring-data-book – ck1

1

좋아, 내가해야 할 일은 주 응용 프로그램에서 스캔을위한 주석을 추가하는 것 뿐이었다. 엔티티와 저장소가 다른 패키지에 있기 때문에 엔티티와 리포지토리를 찾기 위해이 사실을 알려야했습니다. 봄 부팅에서

@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); 
    } 
} 
관련 문제