Spring Boot ne permet pas de haricots en option d'être paresseux lorsque les tests en cours d'exécution

Tueur Beast:

Dans mon ressort de démarrage 2.1 Application, j'ai une classe de service qui ressemble à ceci:

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

Et puis le service autowired B ressemble à ceci:

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

Et dans ma classe de test:

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

Lors de l'exécution de mes tests, je reçois le message d'erreur suivant:

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

Cependant lors de l'exécution de l'application, je ne suis pas face à ce problème et il fonctionne très bien.

NOTE: J'ai essayé de remplacer le rstTemplate Autowiring avec Java 8 en option et il ne fonctionne pas bien.

Tueur Beast:

Je ne sais pas si cela est la solution exacte à ce problème , mais quand essayé avec Java 8 optionnel type, cela ne fonctionne pas. Cependant, quand je suis passé au printemps ObjectProvider, il fonctionne très bien. Idéalement, c'est juste une solution de contournement et non la cause de ce problème.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=228861&siteId=1
conseillé
Classement