我有这样的依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>我有这样的配置:
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setConnectTimeout(ofMillis(3000))
.setReadTimeout(ofMillis(3000))
.build();
}
}我想知道为什么Spring在启动时不会失败。它从来不在第一个restTemplate中,而是在第二个中。我认为Spring会失败。
发布于 2019-10-28 23:47:55
这是一种有效的情况,您正在定义两个具有相同bean的相同name的bean定义,然后定义的最后一个bean将替换定义的第一个bean。
如果您希望在两个bean由相同的名称定义时抛出异常,则可以使用DefaultListableBeanFactory中的setAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding)方法配置是否允许通过注册具有相同名称的不同定义来覆盖bean定义。
https://stackoverflow.com/questions/58593562
复制相似问题