Spring - 找到多个Spring Data模块,进入严格的存储库配置模式

时间:2017-10-29 15:43:08

标签: spring-boot spring-data spring-data-jpa spring-data-elasticsearch spring-data-redis

我在Spring Data,Spring-Data-Elastisearch和Spring-data-Redis(用于http会话)中使用Spring boot 2。 当我启动应用程序。我收到了

2017-10-29 17:38:33.376  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.451  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.461  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.768  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.783  INFO 18625 --- [  restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.ecommerce.core.repository.elastic.ProductElasticSearchRepository.
2017-10-29 17:38:33.787  INFO 18625 --- [  restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.ecommerce.core.repository.jpa.UserRepository.
2017-10-29 17:38:33.790  INFO 18625 --- [  restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.ecommerce.core.repository.jpa.catalog.CategoryJsonWrapperRepository.
2017-10-29 17:38:33.793  INFO 18625 --- [  restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.ecommerce.core.repository.jpa.catalog.CategoryRepository.
2017-10-29 17:38:33.794  INFO 18625 --- [  restartedMain] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.ecommerce.core.repository.jpa.catalog.ProductRepository.

在我的App.java文件中,我有以下几行(应该避免含糊不清)

@EnableJpaRepositories(basePackages = {"com.ecommerce.core.repository.jpa"})
@EnableElasticsearchRepositories(basePackages= {"com.ecommerce.core.repository.elastic"})
@EnableRedisRepositories(basePackages = {"org.springframework.data.redis.connection.jedis"})

每个Spring数据存储库都针对其作业接口进行扩展(主要是JpaRepository和ElasticsearchCrudRepository之一

我读了这篇文章 - https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.multiple-modules.types,你可以看到,一切都应该没有问题。

4 个答案:

答案 0 :(得分:3)

因为您要明确启用特定软件包上的存储库。您可以将其包含在application.properties中,以避免出现这些错误:

spring.data.redis.repositories.enabled=false

您也可以对其他存储库执行相同的操作。如果遇到类似的错误:

spring.data.elasticsearch.repositories.enabled=false
spring.data.jpa.repositories.enabled=false

参考: https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html

答案 1 :(得分:1)

可能为时已晚,但无论如何。这只是一条参考消息,可以帮助您了解如何配置Spring Data Modules。 例如:

 INFO 87518 --- [main] .RepositoryConfigurationExtensionSupport : 
     Spring Data JPA - Could not safely identify store assignment for repository 
          candidate interface com.some.package.MyRepository.

意味着Spring Data JPA模块将跳过MyRepository类,并且不会使用它。

答案 2 :(得分:0)

您的配置可以。该问题是由RedisRepositoriesAutoConfiguration引起的。它仅使用默认配置重复注册EnableRedisRepositories,而默认配置为空basePackages

要解决此问题,您可以通过以下方式排除RedisRepositoriesAutoConfiguration

@SpringBootApplication(
        exclude = { RedisRepositoriesAutoConfiguration.class }
)
public class MySpringBootApp {

}

答案 3 :(得分:0)

在其中一个项目中,我们收到如下消息:

Spring Data LDAP - Could not safely identify store assignment for repository candidate interface com.company.xxx.EncryptionKeyRepository.

解决方案是将此行添加到 application.properties 文件

spring.data.ldap.repositories.enabled=false

这是针对Spring Data LDAP的。我想其他Spring Data组件也是如此。