首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当restTemplate有两个@Bean方法时,Spring Boot应用程序为什么会启动

当restTemplate有两个@Bean方法时,Spring Boot应用程序为什么会启动
EN

Stack Overflow用户
提问于 2019-10-28 23:15:26
回答 1查看 113关注 0票数 1

我有这样的依赖:

代码语言:javascript
复制
<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>

我有这样的配置:

代码语言:javascript
复制
@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会失败。

EN

回答 1

Stack Overflow用户

发布于 2019-10-28 23:47:55

这是一种有效的情况,您正在定义两个具有相同bean的相同name的bean定义,然后定义的最后一个bean将替换定义的第一个bean。

如果您希望在两个bean由相同的名称定义时抛出异常,则可以使用DefaultListableBeanFactory中的setAllowBeanDefinitionOverriding(boolean allowBeanDefinitionOverriding)方法配置是否允许通过注册具有相同名称的不同定义来覆盖bean定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58593562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档