2017-04-02 1 views
1

그래서 저는 단순히 웹과 서비스라는 두 개의 자식 모듈을 가진 다중 모듈 Maven 프로젝트를 가지고 있습니다. 웹 레이어에는 컨트롤러에 단 하나의 컨트롤러와 하나의 메소드가 있으며, 단순히 컨트롤러의 개 연령을 화면에 표시합니다.스프링이있는 다중 모듈 Maven 프로젝트 - 웹 레이어 또는 서비스 레이어에 Spring을 포함합니까?

개가 어디서 왔습니까? 그럼 기본적으로 Dog Store/Service를 포함하는 '서비스'계층 인 또 다른 모듈을 가지고 있으며이 Dog Store는 실제로 주어진 시간에 하나의 Dog 객체 만 포함합니다 (이것은 학습 목적을위한 것입니다).

내 Dog 상점에 Dog 객체를 autowire하기 위해 서비스 모듈에서 Spring의 Dependency Injection 기능을 사용해야합니다. Spring의 D.I.가 분명히 필요합니다. 기능을 내 Dog 컨트롤러에 Dog Store/Service를 autowire하기 위해 웹 모듈에 포함시켜야하지만, POM.xml에 Spring 종속성이 포함되어야하는지 잘 모르겠습니다.

내 질문은이 : 나는 서비스 모듈 및 웹 모듈 모두에서 봄 의존성을 넣어해야합니까? 최종 프로젝트는 사실 웹 모듈을 기반으로 구축 될 것입니다. 웹 모듈에는 서비스 모듈에 대한 종속성이 있습니다 (Dog Service 및 Dog 객체 클래스가 필요하기 때문에).

스프링을 내 서비스 모듈에 종속성으로 포함시키지 않으면 @Autowire와 같은 주석을 사용할 때 컴파일러가 놀라 울 것입니다. 그래서 이것은 약간 혼란 스럽습니다. 어떤 모듈을 스프링 의존성에 넣을 수 있습니까?

아마도 전체 Spring Web MVC 종속성을 서비스 모듈에 넣고 웹 모듈이 다운로드 한 Spring jar뿐만 아니라 모든 사용자 정의 서비스 클래스를 상속하게 할까? (다시 말하면, 웹 모듈은 서비스 모듈에 의존 할 것이다.) 이것은 스프링 웹 MVC에 의존하는 서비스 모듈이 아니기 때문에 조금 직관적 인 것처럼 보입니다. 실제로, 서비스 모듈은 Spring Context 만 필요로한다. 그러나 여기서의 혼란은 "FINAL"스프링 컨텍스트 (Dispatcher Servlet 등)가 웹 모듈 빌드에서 한 번만 사용된다는 것입니다.

저는 웹 모듈이 빌드 한 클래스를 상속 할 수 있도록 서비스 모듈을 만들뿐입니다.하지만 웹 모듈은 서비스 모듈에서 스프링 클래스를 상속 받아야하며, 그렇지 않으면 웹 모듈이 서비스 모듈에서 상속해야합니다. 실제로 스프링 클래스를 자체 POM.xml로 선언 하시겠습니까? 만약 후자의 옵션이라면, 서비스 모듈은 스프링 프레임 워크의 주석과 다른 것들을 의존성없이 사용하고 있다는 것을 알았을 때 서비스 모듈이 놀라지 않을 것인가?

나는 그게 많다는 것을 알았지 만, 나는 내 상황에서 가능한 한 명확 해 지려고 노력했다. 나의 질문이 의미가 있기를 바랍니다. 귀하의 답변 주셔서 감사합니다!

답변

0

응용 프로그램에 상위 POM을 추가하고 거기에 정의 된 모든 종속성을 유지하고 웹 및 서비스 모듈을 하위 모듈로 만드는 것이 좋습니다. 부모 POM에서 자세한 내용

을위한 this을 참조 종속성 웹 서비스 모듈에 정의 된 종속 위

<dependencyManagement> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
    <version>4.3.5.RELEASE</version> 
    </dependency> 
</dependencyManagement> 

사용, 또한

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
</dependency> 

, 서비스를 추가, 같은 것을 정의 모듈을 웹 모듈에 대한 종속성으로 간주합니다.

관련 문제