一篇文章梳理spring boot 加载 spring data jpa的全过程.
用过spring boot 与spring data jpa 的都知道,只需要简单的配置,就能实现数据库的CRUD, 但使用简单的前提是spring 为我们做了太多工作,而这些工作的一个核心就是自动装配,而自动装配也是约定优于配置方案的最佳实践。
利用spring中的SPI(Service Provider Interface)机制, 也就是约定在工程的META-INFO目录下配置相关的文件,比如spring.factories文件,在项目启动的时候,去扫描各个jar包及工程目录下META-INFO文件夹下的spring.factories 文件,根据里面的配置,加载相关的类,这就是spring boot的核心装配思想.
有了上面的思路,再来看spring data jpa是怎么自动装配进来的。我们找到 spring-boot-autoconfigure这个jar包中的 spring.factories ,可以看到很多配置。再其中搜索JPA 可以看到如下内容:
然后可以打开 HibernateJpaAutoConfiguration 这个类查看.
在这个类里面的 JpaProperties 里面也就是我们JPA相应的配置项. 也就是在配置文件中,经常配置的 spring.jpa.xxxx 。另外注意到 import 了 HibernateJpaConfiguration 这个类.
看到上面有 HibernateProperties 这个类,这就是配置文件中 hibernate相关的配置,用spring.jpa.hibernate.xxxx 配置的。同时注意到这个类是继承于 JpaBaseConfiguration,很多核心的功能在这里面,然后剩下的东西就是hibernate本身的了。
从这些过程可以看到整个spring boot在启动 jpa 的一个装配过程,其实整个过程就是约定优于配置的实践,当然还有很多辅助的注解来实现。
补充一点,如果需要配置hibernate相关的属性,有一个类是可以参考的,里面有很多属性与配置文件应该可以对应的,如果哪一天不知道怎么配置了,可以参考这个类:AvailableSettings
From:一号门
Previous:springboot jpa mongodb 打印查询语句.
COMMENTS