这是我的《学透Spring Boot》专栏的第15篇文章,了解更多请移步我的专栏:CSDN Postnull的专栏《学透Spring Boot》
目录
遇到的问题
分析日志
自动配置的过程
解决报错
方法1:添加数据库配置
方法2:关闭JPA自动配置
总结
遇到的问题
有一天,我在pom.xml中引入了一些依赖,再次启动应用,发现启动报错了
分析日志
看日志,其实已经很明显了。
因为我们classpath下有数据库相关的类,但是却没有配置数据库。
比如
- url
- username & password
- driver-class-name
自动配置的过程
这是因为我们在pom.xml中引入了数据库有关的依赖
然后Spring Boot在启动的过程中,会去尝试自动配置JPA。
它是通过读取org.springframework.boot.autoconfigure.AutoConfiguration.imports 这个文件,找到
JPA的自动配置类DataSourceAutoConfiguration
它的目的是为了自动创建和配置 dataSource这个对象。
这个配置类会根据条件来自动配置
可以打开spring boot的debug日志(debug=true)来查看这个配置类是否生效。
可以看到,这个JPA自动配置类是生效了的。
这个配置类去会配置DataSource
JPA默认使用的是Hikari数据源
然后去加载配置时,找不到驱动类配置,直接抛出异常,应用启动失败。
解决报错
方法1:添加数据库配置
有几种方案,第一种是添加数据库有关的配置。
application.properties
这样应用可以启动成功。各种JPA有关的Bean自动创建并配置。
方法2:关闭JPA自动配置
有时候,我们引入了JPA依赖,但是我们的数据库暂时挂了,我们想启动应用,测试其它非数据库交互的模块,这个时候怎么办呢?
我们可以暂时关闭JPA的自动配置
这样应用就可以启动了
需要注意的是,这样的关闭自动配置有时候会导致应用启动报错。
比如我们项目中已经添加了JPARepository的情况下
这时启动会报错:
总结
通过这个例子,我们应该可以更进一步地理解Spring Boot对JPA的自动配置。