74.11 配置JPA使用的组件

如果想配置一个JPA使用的组件,你需要确保该组件在JPA之前初始化。组件如果是Spring Boot自动配置的,Spring Boot会为你处理。例如,Flyway是自动配置的,Hibernate依赖于Flyway,这样Hibernate有机会在使用数据库前对其进行初始化。

如果自己配置组件,你可以使用EntityManagerFactoryDependsOnPostProcessor子类设置必要的依赖,例如,如果你正使用Hibernate搜索,并将Elasticsearch作为它的索引管理器,这样任何EntityManagerFactory beans必须设置为依赖elasticsearchClient bean:

  1. /**
  2. * {@link EntityManagerFactoryDependsOnPostProcessor} that ensures that
  3. * {@link EntityManagerFactory} beans depend on the {@code elasticsearchClient} bean.
  4. */
  5. @Configuration
  6. static class ElasticsearchJpaDependencyConfiguration
  7. extends EntityManagerFactoryDependsOnPostProcessor {
  8. ElasticsearchJpaDependencyConfiguration() {
  9. super("elasticsearchClient");
  10. }
  11. }