2016-11-28 1 views
0

JPA 엔티티가 모두 설정되면 스프링 부트 CrudRepository 인터페이스가 도움이 될 것 같습니다. 필요한 경우 항상 @Autowired 주석에 기반하지 않고 CrudRepository 인스턴스를 만들고 싶습니다. 예를 들어, 유스 케이스에서는 도메인 (또는 참조) 테이블 이름 목록을 포함하는 GUI 메뉴가 있습니다. 사용자가 선택한 항목에 따라 프로그램은 CrudRepository 구현 중 하나를 인스턴스화합니다.스프링 부트 CrudRepository에 대한 자동 지원

@Autowired을 사용하는 경우 코드 작성시 가능한 모든 구현을 완료해야합니까?

한 가상의 사용 사례 :

public interface PublisherRepository extends CrudRepository<Publisher, Long> { 
} 

public interface AuthorRepository extends CrudRepository<Author, Long> { 
} 

(. 난 그냥 난 아직도 결국 이러한 엔티티를 생성해야 실현)

GUI 메뉴에서

, "출판사"가 될 것 "저자" 등, 그리고 위의 저장소 인터페이스를 기반으로 GUI를 유지 보수 구성 요소를 만들 싶습니다. @Autowired을 다음과 같이 입력하거나 동적으로 생성하는 것이 좋습니다.

@Autowired 
PublisherRepository publisherRepo; 

@Autowired 
AuthorRepository authorRepo; 

이러한 repo 인스턴스를 만드는 방법이 있다면 스프링 부팅에서 어떻게 수행되는지 가르쳐 주시겠습니까? 미리 전문 지식을 공유해 주셔서 감사합니다.

감사

,

Student_t는

+0

정말 게으르길 필요합니까? 나는 그것이 당신에게 약간의 여분의 시간을 절약 할 것이라고 생각하지 않습니다. – Slimer

답변

-2

일반적으로, 콩은 그렇게하지 사용되는 콩을 @Autowiring하는 것은 문제가되지 않습니다, 열심히 만들어집니다. 어쨌든 메모리를 사용하고 시작 시간을 소비합니다.

정말로 autowire하고 싶지 않다면, org.springframework.beans.factory.BeanFactory를 @Autowire하고 getBean을 사용하여 원하는 저장소를 얻을 수 있습니다. 그러나 이것은 끔찍한 생각입니다. 이렇게하면 @Service가 Spring과 연결되며 (저장소가없는 경우) 시작시 예외가 아닌 런타임 (런타임 중) 런타임 예외가 발생합니다.

+2

아니야. Spring Data JPA가이를 처리합니다. 또한 주석을 인터페이스에 두는 것은 거의 쓸모가 없습니다. –

+0

오, 알아두면 좋구나! –

+0

@ M.Deinum 그래서 Spring Data & Spring Boot를 사용한다면 더 이상 주석이 필요 없습니다.) (예 :'@ Configuration','@ EnableAutoConfiguration','@ EnableWebMvc','@ ComponentScan','@ Repository' -> trash) –

관련 문제