2017-10-13 1 views
0

스프링 부트와 maven을 사용하여 프로젝트를 다른 독립적 인 maven 프로젝트로 모듈화하는 과정에서 다중 모듈 maven 프로젝트에서 bean의 autowiring이 작동하지 않는 문제가 발생했습니다. 스프링 부트 Maven 다중 모듈 프로젝트에서 bean의 autowiring이 작동하지 않는다

그냥 당신에게 문제의 개요를 제공하기 위해, 아래 지금까지 개발 된 독립 받는다는 프로젝트는

  1. 는 CoreServices에 - 전체 응용 프로그램의 봄 부팅 도메인 개체를 포함합니다 : 출력 JAR를
  2. 봄 부팅을 DBservices1은-포함 출력 JAR
  3. 보상 -contains 보상 모듈 관련 파일 (컨트롤러, 서비스 (비즈니스 로직 서비스), 조회수) : 출력 JAR
  4. RewardsApp- 독립 depl 저장소 및 서비스 (데이터베이스 서비스) 데이터베이스에 액세스하기 oyable Maven 프로젝트 : 출력 WAR 아래

는 RewardsApp-> 보상 종속성 구조 -> DBservices1 -> CoreServices에

문제는 매핑 서비스를 가져 보상 및 DBservices1에 사용 @Autowired 주석 @Service의 주석을 붙일 수

/@RepositoryRewardsApp 프로젝트에서 사용할 수 없습니다.

RewardsApp의 bean을 @Bean annotation으로 구성한 경우, 서버에서 서비스를 시작할 수 있습니다. 이 방법을 사용하면 종속 프로젝트에 사용 된 RewardsApp의 모든 bean을 수동으로 구성해야합니다. 우리는 우리의 응용 프로그램에 많은 서비스와 저장소를 가지고 있으며 많은 콩을 만들어야하는 것처럼 적절한 방법으로 콩을 만드는 것이 적절하다고 생각합니다.

우리가 패키지 아래 com.company.application

아래에있는 모든 프로젝트에서 모든 스프링 부트 컨트롤러, 서비스, repositorys을 만든 있습니다 메인 클래스의 코드 조각입니다 :

@SpringBootApplication 
@ComponentScan(basePackages = {"com.company.application"}) 
public class RewardsApp extends SpringBootServletInitializer { 

    public static void main(String[] args) { 
     SpringApplication.run(RewardsApp.class, args); 
    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(RewardsApp.class); 
    } 
} 

/** 
*Manual beans in RewardsApp 
**/ 
@Bean 
public SomeService someService() 
{ 
    return new SomeService(); 
} 
+0

'com.company.application' 패키지에'RewardsApp'도 있습니까? 그렇지 않으면'com.company' 패키지에 넣고'@ ComponentScan'을 제거하십시오 (이미'@ ComponentScan'에 의해 함축되어 있습니다). –

답변

0

Import docs here은 이제 항아리

@ComponentScan(basePackages = {"com.company"}) 
@EntityScan(basePackages = {"com.company"}) 
@EnableJpaRepositories(basePackages = {"com.company"}) 
내가 서비스를위한 위의 생각

내부 클래스 일하고 autowiring에, 나를 위해 속임수를 썼는지 엔티티 (도메인), 리포지토리

2

어떻게 구성을 갖는에 대한 각 모듈에 대한 클래스 (관련 comp 스캔 포함) 및 해당 구성을 응용 프로그램 클래스로 가져 오기? RewardsApp.java에 주석 아래에 추가함으로써

@SpringBootApplication 
@ComponentScan(...) 
@Import({RewardsContext.class, DBservicesContext.class}) 
... 

관련 문제