У меня есть загрузочное приложение Spring.Мой репозиторий написан следующим образом:
Интерфейс:
@NoRepositoryBean
public interface MyQueryRepository {
int checkThis(String this);
int checkThisAndThat(String this, String that);
}
Абстрактный класс:
public abstract class AbstractMyQueryRepository implements MyQueryRepository {
@Override
public int checkThis(String this) {...}
@Override
public int checkThisAndThat(String this, String that) {...}
}
затем реализация:
@Transactional(TVServiceDbConfigAtlanta.TV_TRANSACTION_MANAGER_NAME_ATLANTA)
@Repository
public class MyQueryRepositoryAtlanta extends AbstractMyQueryRepository {
@Autowired
public MyQueryRepositoryAtlanta (
@Qualifier(TVServiceDbConfigAtlanta.TV_DATA_SOURCE_BEAN_NAME_ATLANTA) final DataSource dataSource) {
super(dataSource);
}
}
Когда я пытаюсь автоматически подключить MyQueryRepositoryAtlanta в моем UT следующим образом:
@ExtendWith(SpringExtension.class)
@DataJpaTest
@ActiveProfiles("test")
class MyQueryRepositoryAtlantaTest{
@Autowired
private MyQueryRepositoryAtlanta myQueryRepositoryAtlanta ;
@Test
void checkThisTest() {
assertThat(myQueryRepositoryAtlanta.checkThis("ABC")).isEqualTo(1);
}
@TestConfiguration
@Profile("test")
@Import(TVServiceDbConfigAtlanta.class)
public static class Config {
}
}
я получаю следующую ошибку:
org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания бина с именем 'com.myapp.MyQueryRepositoryAtlantaTest': Неудовлетворенная зависимость, выраженная через поле 'myQueryRepositoryAtlanta';Вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа com.myapp.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательный = true)} в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (Autowiredevan [-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:91) ~ [spring-beans-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues (AutowiredAnnotationBeanPostProcessor.java:372) ~ [spring-beans-5.0.8.RELEASE.REL.jar: 5.0:springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1341) ~ [spring-beans-5.0.8.RELEASE.jar: 5.0.8.Relan.Beaf.autowireBeanProperties (AbstractAutowireCapableBeanFactory.java:393) ~ [spring-beans-5.0.8..jar: 5.0.8.RELEASE] [...]
Я не уверен, что понимаю почему, поскольку:
- Аннотируемый компонент, который я тестирую, аннотированкак @Repository и
- Нет другого компонента, вызываемого таким же образом
Я также проверил похожие ответы в SOF, но они неприменимы из-за конкретной структуры, которую я использую.Есть идеи о том, как решить проблему?