首页 > 解决方案 > Spring boot Bean注解及Configuration中的实例变量流

问题描述

我是 Spring Boot 框架的新手,我对 @Bean 注释以及实例变量如何被 Bean 更改有些困惑。我有一个下面的例子,如果有人可以回答我的问题将非常有帮助:

  1. 如果我在我的实例变量中定义 restTemplate 将 userRestTemplate 模板 bean 将能够改变它的值?
  2. 如果 userRestTemplate 正在更改其值,那么 userDetail 将通过 userRestTemplate bean 获得更新的值?
  3. 如果不是 userdetail bean 将在 setTemplate 方法中设置什么?
@Configuration
public class UserConfiguration{
    RestTemplate restTemplate;

    @Bean
    @Named("userRestTemplate")
    public RestTemplate userRestTemplate(RestTemplateBuilder restTemplateBuilder) {
        RestTemplate restTemplate = restTemplateBuilder.build();
        //restTemplate.getMessageConverters().add(0, createMappingJacksonHttpMessageConverter());
        this.restTemplate = restTemplate;
        return restTemplate;
    }



    @Bean
    public UserDetail userDetail() {
        UserDetail user = new UserDetail();
        user.setTemplate(restTemplate);
        return user;
    }
}

标签: javaspringspring-boot

解决方案


您可以使用以下代码配置新 bean。

    @Configuration
public class UserConfiguration{
    private final RestTemplate restTemplate;

    @Autowired
    public UserConfiguration(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }
    
    @Bean
    public UserDetail userDetail() {
        UserDetail user = new UserDetail();
        user.setTemplate(restTemplate);
        return user;
    }
}

推荐阅读