J'utilise Spring boot 2 avec Spring Data, Spring-Data-Elastisearch et Spring-data-Redis (pour les sessions http). Lorsque je démarre l'application. Je reçois
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.
Dans mon fichier App.Java, j'ai les lignes suivantes (ce qui devrait éviter l'ambiguïté)
@EnableJpaRepositories(basePackages = {"com.ecommerce.core.repository.jpa"})
@EnableElasticsearchRepositories(basePackages= {"com.ecommerce.core.repository.elastic"})
@EnableRedisRepositories(basePackages = {"org.springframework.data.redis.connection.jedis"})
Chaque référentiel de données Spring s'étend spécifiquement à son interface de travail (principalement JpaRepository et l'un des ElasticsearchCrudRepository
J'ai lu ceci - https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.multiple-modules.types et comme vous pouvez le voir, tout devrait fonctionner sans problèmes.
C'est probablement trop tard, mais de toute façon. Il s'agit simplement de messages d'information qui vous aident à comprendre comment les modules de données Spring sont configurés. Par exemple:
INFO 87518 --- [main] .RepositoryConfigurationExtensionSupport :
Spring Data JPA - Could not safely identify store assignment for repository
candidate interface com.some.package.MyRepository.
Signifie que le module Spring Data JPA ignorera la classe MyRepository et ne l'utilisera pas.
Dans l'un des projets, nous avions des messages comme:
Spring Data LDAP - Could not safely identify store assignment for repository candidate interface com.company.xxx.EncryptionKeyRepository.
La solution consistait à ajouter cette ligne dans le fichier application.properties
spring.data.ldap.repositories.enabled=false
C'est pour Spring Data LDAP. Je suppose que c'est similaire pour les autres composants Spring Data.
Vos configurations sont correctes. Le problème est dû à RedisRepositoriesAutoConfiguration
. Il enregistre EnableRedisRepositories
à plusieurs reprises uniquement avec la configuration par défaut, qui avec basePackages
vide.
Pour résoudre le problème, vous pouvez exclure RedisRepositoriesAutoConfiguration
par:
@SpringBootApplication(
exclude = { RedisRepositoriesAutoConfiguration.class }
)
public class MySpringBootApp {
}