@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 扫描包有先后顺序

 





posted @ 2020-08-21 15:34  JustTheWayIAm  阅读(30444)  评论(0编辑  收藏  举报