Мы настроили проект ETL в некотором беспорядке, просто чтобы выполнить работу:
Этот проект зависит от нескольких других проектов Spring, поэтому мы включили эти проекты в качестве зависимостей. Эти проекты содержат свои собственные классы @Configuration, которые могут вызвать конфликты. Сейчас я нахожусь в состоянии, когда я установил репозиторий Dynami c в моем проекте ETL, но он не подключается автоматически, что выдает ошибку:
конструктор в com.myetl.service.impl. ErrorServiceImpl требуется bean-компонент типа 'com.myetl.repository.ProjectErrorRepository', который не может быть найден.
Я вижу ранее в консоли при запуске приложения, что он обрабатывает его как репозиторий Redis. :
RepositoryConfigurationExtensionSupport: Spring Data Redis - не удалось безопасно определить назначение хранилища для интерфейса кандидата в репозиторий com.myetl.repository.ProjectErrorRepository. Если вы хотите, чтобы этот репозиторий был репозиторием Redis, рассмотрите возможность аннотирования ваших сущностей одной из следующих аннотаций: org.springframework.data.redis.core.RedisHa sh (предпочтительно) или рассмотрите возможность расширения одного из следующих типов с вашим репозиторием. : org.springframework.data.keyvalue.repository.KeyValueRepository.
У меня нет конфигурации Redis где-либо в моем базовом проекте, но она определенно есть в одной из моих зависимостей.
Я пробовал несколько разных вещей, но ничего не работает. Например, используя фильтр исключения:
@SpringBootApplication(exclude = {DifferentProjectConfiguration.class})
@ComponentScan(includeFilters =
@ComponentScan.Filter(type= FilterType.REGEX,
pattern = "com\\.etl\\..*"),
excludeFilters =
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE,
value = {OtherProjectRedisConfiguration.class}))
public class ProjectsMigrationApplication {
...
Если я закомментирую репозиторий, приложение будет нормально загружаться, включая контроллеры и служебные компоненты. Эта проблема, кажется, только нацелена на репозиторий, которым я хочу быть репозиторий MySql JPA. Вот определение моего репозитория (я пробовал его с аннотацией @Repository и без нее):
package com.etl.repository;
import com.etl.domain.ProjectError;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
public interface ProjectErrorRepository extends PagingAndSortingRepository<ProjectError, Long> {
}
@Entity
@Table(name="project_error")
@Data
public class ProjectError {
@Id
@Column(name = "project_error_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column
private String errMsg;
@Column(name = "user_email")
private String userEmail;
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "migrationEntityManagerFactory", basePackageClasses = {
ProjectError.class}, repositoryBaseClass = ProjectErrorRepository.class)
public class ProjectMigrationJpaConfig {
@Bean(name = "migrationEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean migrationEntityManagerFactory(EntityManagerFactoryBuilder builder,
DataSource dataSource) {
return builder
.dataSource(dataSource)
.packages(ProjectError.class)
.build();
}
}
Как лучше всего диагностировать этот тип ошибки в лабиринтном проекте чтобы понять, что делает весна за кулисами?