Spring - Несколько Spring Найдены модули данных, вход в режим конфигурации жесткого репозитория
Я использую Spring boot 2 с Spring Data, Spring -Data-Elastisearch и Spring -data-Redis (для сеансов http).
Когда я запустил приложение. Я получаю
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, и, как вы можете видеть, все должно работать без проблем.
Ответы
Ответ 1
Наверное, уже поздно, но все равно. Это просто информационные сообщения, которые помогут вам понять, как настроены модули Spring Data. Например:
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
С вашими настройками все в порядке. Проблема вызвана RedisRepositoriesAutoConfiguration
. Он регистрирует EnableRedisRepositories
несколько раз только с конфигурацией по умолчанию, которая с пустыми basePackages
.
Чтобы решить эту проблему, вы можете исключить RedisRepositoriesAutoConfiguration
образом:
@SpringBootApplication(
exclude = { RedisRepositoriesAutoConfiguration.class }
)
public class MySpringBootApp {
}
Ответ 3
В одном из проектов у нас были такие сообщения:
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.