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 掃描包有先后順序