gpt4 book ai didi

java - Spring Boot 不允许 Optional Bean 在运行测试时懒惰

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:03 24 4
gpt4 key购买 nike

在我的 Spring Boot 2.1 应用程序中,我有一个看起来像这样的服务类:

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

然后 Autowiring 的服务 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

但是在运行应用程序时,我没有遇到这个问题,它运行良好。

注意:我尝试用 Java 8 Optional 替换 rstTemplate Autowiring,但效果不佳。

最佳答案

不确定这是否是此问题的确切解决方案,但在尝试使用 Java 8 可选类型时,没有成功。但是,当我切换到 Spring 的 ObjectProvider 时,它工作正常。理想情况下,这只是一种解决方法,而不是此问题的根本原因。

关于java - Spring Boot 不允许 Optional Bean 在运行测试时懒惰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com