@SpringBootApplication 注解 scanBasePackages的先后順序導致的掃描失敗問題總結


 

 

 

 

1、背景


在一個多module項目的開發過程中,有一個第三方依賴jar包 cn.hutool 中的SpringUtils死活掃描不到,當時的配置情況是這樣的

 啟動類配置:


@SpringBootApplication(scanBasePackages = {"com.xx.xx.xx.A", "com.xx.xx.B","cn.hutool"})
@MapperScan("com.didiglobal.hr.global.platform.dao.mapper")
@Slf4j
public class Application {
public static void main(String[] args) {
long start = System.currentTimeMillis();
SpringApplication.run(Application.class, args);
log.info("Springboot start Success,cost:{}", System.currentTimeMillis() - start);
}
}

EventBus配置:

@Bean
public EventBus eventBus() {
EventBus eventBus = new EventBus();
Map<String, AbstractBaseSubscribe> beansOfSubscribe = SpringUtil.getBeansOfType(AbstractBaseSubscribe.class);
beansOfSubscribe.values().forEach(eventBus::register);
return eventBus;
}

啟動時提示錯誤信息如下:

 

 

 

提示在實例化EventBus的時候出現了空指針異常

 

2、最終解決方案

@SpringBootApplication(scanBasePackages = {"com.xx.xx.xx.A", "cn.hutool", "com.xx.xx.B"})
@MapperScan("com.didiglobal.hr.global.platform.dao.mapper")
@Slf4j
public class Application {
public static void main(String[] args) {
long start = System.currentTimeMillis();
SpringApplication.run(Application.class, args);
log.info("Springboot start Success,cost:{}", System.currentTimeMillis() - start);
}
}

將 "cn.hutool" 放到了 "com.xx.xx.B" 前解決這個問題,說明 @SpringBootApplication 注解的 scanBasePackages 掃描包有先后順序

 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM