2014-10-19 6 views
0

Maven과 XML 설정이없는 Java 구성에서 Spring 기반 애플리케이션 (Ex app1 및 app2)을 완전히 개발 중입니다. Maven -WAR 플러그인을 통해 app2의 Jar 참조를 만들고 mvn install:install file을 사용하여 app2 jar를 app1과 바인딩했습니다. app2 - 데이터 소스에서 정보를 가져 오는 데 사용됩니다.Spring의 외부 Jar에서 @service를 autowire하는 방법

app1 구현 클래스에서 app2 serive를 autowired로 사용하여 app2 응용 프로그램에 @Service으로 주석 된 세부 정보를 가져옵니다.

내 첫 의심의 여지가 있습니다 :

모두 APP1과 APP2이 별도의 AppConfig.java file.Is이 가능 단순히 내가 정의 또는 수입 앱 2의 appconfig가 필요하거나 다른 항아리 형식의 availble이다 @Service 중 하나를 autowiring에 java 파일을 App1의 AppConfig.jave 파일에 저장하십시오.

나는 외부 JAR @Service 클래스를 자동으로 실행하고 오류로 끝냈다.

외부 클래스 Jar의 @Service을 구현 클래스로 autowire하려면 어떻게해야하는지 잘 도와주세요.

다음은

@Repository 
public class VehicleRepository { 

    @Autowired 
    VehicleService vehicleservice; 

    public Map<String, item> getAllTypes(String type) {  

      Vehicke vehicle = vehicleservice.getAllVehicle(type); 

      // handle response here... 
     } catch (Exception ex) { 

      // handle exception here 
     } finally { 

     } 
     return vehicleDetails; 
    } 

} 

VehicleService 외부 항아리에서 사용할 수 있습니다 내 앱 1 저장소 클래스입니다.

VehicleService 클래스 :

@Service 
public class VehicleService { 

    public VehicleService() { 
    } 

    @Autowired 
    PortRepository portRepository; 

    @Autowired 
    MessageSource messageSource; 


    public Vehicle getAllVehicles(String type) { 
     List<Vehicle> cehicles = portRepository.getPorts(); 
     return vehicle; 
    } 
+0

콩은 구성 클래스에 의해 정의됩니다. Spring이 config 클래스들 중 하나로 초기화되지 않는다면 분명히이 config 클래스에 정의 된 bean은 Spring에 알려지지 않습니다. –

+0

@JBNizet 저장소 클래스의 autowire 서비스 전에 App2의 구성을 호출하는 방법이 있습니까? 또는 App2의 AppConfig 파일을 App2의 AppConfig 파일에 포함/호출하는 방법은 – Ramkumar

+0

입니다. App1의 구성 클래스에서 App2의 구성 클래스를 가져 와서 http://docs.spring.io /spring/docs/current/javadoc-api/org/springframework/context/annotation/Import.html. 그러나 이러한 애플리케이션이 실제로 독립적으로 실행되도록 설계된 애플리케이션이라면 분명히 상충되는 빈을 가질 수 있습니다. App1의 일부로 사용할 때 의미가있는 Bean 만 App2에서로드하려면 별도의 구성 클래스를 작성해야합니다. –

답변

1

의 그것을 간단하게하자.
App1은 App2에 따라 다릅니다.
그래서 @Import (App2Config.class) 클래스 인 App1Config {을 사용하십시오. 대신에 트릭의

그리고 그런데
, 'MVN 설치 : 파일 설치'그냥 모듈 APP1과 APP2와 부모의 pom.xml을 사용할 수 있습니다, 그리고 pom.xml 파일에서 모듈 APP2에 모듈 APP1의 의존성을 선언 종속 관계 > 섹션. 그런 다음 'mvn install'을 실행하여 프로젝트를 빌드하십시오.
여기에 예제를 참조하십시오. http://books.sonatype.com/mvnex-book/reference/multimodule.html

+0

Tomcat에 배포 된 다른 App config의 가져 오기를 사용했지만 Tomcat에 배포 된 WAR를 만들었지 만 아래 오류가 발생했습니다 : java.lang.IllegalArgumentException : 서블릿에 'dispatcher'라는 이름을 등록하지 못했습니다. 에 등록 된 다른 서블릿이 있는지 확인하십시오. 같은 이름. " – Ramkumar

+0

의심의 여지가 하나 더 있습니다.간단합니까? 가져 오기만으로 충분합니다. 또는 App2 구성에서 App1 구성으로 사용할 수있는 정의를 자동으로 정의하고 정의해야합니다. – Ramkumar

+0

첫 번째 주석과 관련하여 주어진 서블릿 하나만 정의한 web.xml 파일이 하나만 있어야합니다. 이름. 두 번째 주석과 관련하여 @Import는 App2Config에 정의 된 것처럼 App2Config에 정의 된 모든 bean을 포함하도록 App1Config를 만듭니다. – Alexander