2017-10-13 127 views
0

儘管使用spring boot和maven將我們的項目模塊化爲不同的獨立maven項目,但我們遇到了一個問題,那就是多模塊maven項目中的bean自動裝配不起作用。Spring Boot在maven多模塊項目中,自動裝配bean不起作用

只給你這個問題的概述,下面是迄今爲止開發獨立的Maven項目

  1. Coreservices - 包含整個應用程序的春天啓動域對象:輸出JAR
  2. DBservices1 - 包含彈簧啓動存儲庫和服務(數據庫服務)來訪問數據庫:輸出JAR
  3. 獎勵 - 包含獎勵模塊相關的文件(控制器,服務(業務邏輯服務),查看):輸出JAR
  4. RewardsApp-獨立DEPL oyable Maven項目:輸出WAR

下面是依賴結構 RewardsApp->獎勵 - > DBservices1 - > Coreservices

的問題是獎勵和DBservices1用於獲取映射服務@Autowired註解與@Service/@Repository不適用於RewardsApp項目。

作爲解決方法,我們已經使用@Bean註釋配置了RewardsApp中的bean,然後這些服務可供服務器成功啓動。 通過這種方法,我們需要手動配置依賴項目中使用的RewardsApp中的所有bean。 我們的應用程序中有許多服務和存儲庫,我們認爲創建這樣的bean並不是一個正確的方法,因爲需要創建許多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

通過RewardsApp.java添加下面的註釋的伎倆對我來說,現在自動裝配工作爲類的罐子

@ComponentScan(basePackages = {"com.company"}) 
@EntityScan(basePackages = {"com.company"}) 
@EnableJpaRepositories(basePackages = {"com.company"}) 

我想上面是服務裏面,實體(域),知識庫

2

一下怎麼樣配置類(與相關的比較掃描)爲每個模塊和導入這些配置到您的應用程序類?

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

Import docs here

相關問題