2017-03-16 6 views
0

이클립스, 봄, DDD 및 저장소 패턴 우리는 일식, 봄, DDD 및 우리의 현재 secenario 다음 플러그인으로 구성되어 저장소 패턴을 사용하여 응용 프로그램을 개발하는

  1. 플러그인 Domain.project : Repository.class 인터페이스가 포함되어 있습니다.
  2. 플러그인 Repository.project : Repository.class 인터페이스의 다른 구현을 포함합니다 (예 : ExampleRepositoryImpl.class). 따라서이 플러그인에는 종속성에 Domain.project 플러그인이 있습니다.

Plug-in Repository.project에 구현 된 Repository의 구현 중 하나 인 주입을 통해 호출하는 Plug-in Domain.project에서 Service.class를 만들었습니다. 그러나 주사가 제대로 풀리지는 않습니다.

  1. Domain.project에서 Repository.project에 dependecy를 추가 할 수 없으므로 중복주기 오류가 발생합니다.
  2. 또한 DDD 접근 방식을 따르므로 Domain.project는 나머지는 볼 수 있지만 그 반대입니다. 당신이 말했듯이

저장소 인터페이스는 도메인 프로젝트에있는, 너무 많은 종류와 관련,

Eclipse, Spring, DDD and the repository pattern

+0

왜 리포지토리에 패키지를 분리해야합니까? 리포지토리 인터페이스는 도메인 클래스와 함께 동일한 패키지에 있습니다. 둘째, 저장소 구현 프로젝트는 도메인 프로젝트에 의존해야합니다 (즉, "보게"). 왜 도메인 프로젝트는 RepositoryImpl 클래스의 구현 세부 사항을보고 싶습니까? –

+0

마르쿠스 대단히 감사합니다. 아래에 새 항목을 적어 두십시오. –

답변

0

을 주셔서 감사합니다. 도메인 프로젝트에 포함 된 모든 인터페이스 구현마다 하나의 프로젝트를 만듭니다. 예를 들어 JBDCRepository, PureQueryRepository 용 프로젝트, JsonRepository 용 프로젝트 등을 만들었습니다. 따라서 리포지토리 프로젝트 구현은 도메인 프로젝트에 종속 ("참조")하지만 도메인 프로젝트에는 리포지토리 프로젝트 구현에 대한 종속성이 없습니다. 우리는 도메인 프로젝트는 우리가 ClassNoFoundException에게

종류와 관련, Brais Cidrás을 얻을 저장소 프로젝트 구현가 표시되지 않기 때문에,/선택 봄 통해 이러한 저장소 중 하나를 주입하고자 할 때 그래서, 우리의 문제는 발생 .

0

도메인은 어떤 구현이 사용되는지는 신경 쓰지 않아야합니다. 그래서 저장소 인터페이스와 저장소 구현을 분리해야합니다. -> 사용 예를 들어,

  • 를 서버 시작시 결정 : 당신이 구현의 선택이 얼마나 역동적 인 생각, 사용할 구현을 결정하기 위해서는

    Spring Profiles : "jdbc"라는 프로파일, "json"이라는 프로파일 등을 사용하고 어플리케이션을 시작할 때 원하는 프로파일을 활성화하십시오. 이 방법으로 지정된 프로파일의 저장소 구현 만 인스턴스화되어 주입됩니다.

  • 클래스 수준에서 결정 -> 예 : Spring Qualifiers 하나의 Spring 빈이 저장소의 "jdbc"구현을 필요로하고 다른 저장소가 동일한 저장소의 "json"구현을 필요로하는 경우 각 구현을 각 한정자 이름으로 인스턴스화하고 해당 한정자를 지정하여 원하는 저장소 구현을 삽입하십시오.