Spring Boot не позволяет Optional Bean быть Ленивым при выполнении тестов - PullRequest
3 голосов
/ 20 июня 2019

В моем приложении Spring Boot 2.1 у меня есть класс обслуживания, который выглядит примерно так:

@Service
public class AImpl implements A {
    @Autowired
    B bservice;
}

А затем служба B с автоматическим подключением выглядит следующим образом:

@Service
public class BImpl implements B {
    @Autowired(required = false)
    @Lazy
    org.springframework.web.client.RestOperations restTemplate;
}

Ив моем тестовом классе:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {...})
@DataJpaTest
@EnableJpaRepositories("com.xxx")
@EntityScan("com.xxx")
public class CImplTest {
    @Autowired
    B bservice;
    @Autowired
    A aservice;
}

При выполнении моих тестов я получаю следующее сообщение об ошибке:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.client.RestOperations' available: Optional dependency not present for lazy injection point

Однако при запуске приложения я не сталкиваюсь с этой проблемой, и онаработает нормально.

ПРИМЕЧАНИЕ. Я попытался заменить rstTemplate Autowiring на Java 8 (необязательно), и он не работает должным образом.

1 Ответ

0 голосов
/ 15 июля 2019

Не уверен, что это точное решение этой проблемы, но при попытке с дополнительным типом Java 8 это не сработало. Тем не менее, когда я переключился на Spring 100 *, он работает нормально. В идеале это просто обходной путь, а не основная причина этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...