Spring Boot多数据源配置报错:this.embeddedDatabaseConnection为null
配置Spring Boot多MySQL数据源遇到的初始化问题及解决过程
问题现象
- 首次初始化阶段,
application.properties中的数据源配置可被正常读取,org.springframework.boot.autoconfigure.jdbc.initializeDataSourceBuilder能成功构建数据源 - 第二次调用该构建方法时,所有配置信息丢失,字段全部为空
- Spring Boot自动尝试配置默认嵌入式数据库,因未提供嵌入式数据库相关配置,触发空指针异常:
java.lang.NullPointerException: Cannot invoke "org.springframework.boot.jdbc.EmbeddedDatabaseConnection.getDriverClassName()" because "this.embeddedDatabaseConnection" is null
背景说明
整合Spring Boot官方指南的多数据源、多EntityManager配置方案及官方JPA示例代码,编写了TwoDataSources配置类与application.properties配置文件,问题发生时可提供完整报错栈信息。
解决步骤
- 调整数据源配置方式:注入
DataSourceProperties实例而非手动新建对象,解决了配置信息丢失的问题,但出现新报错:找不到名为entityManagerFactory的Bean - 针对新问题,为第二个EntityManager Bean添加
@Bean(name="entityManagerFactory")注解,最终解决所有问题
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

