首页 > 解决方案 > 当 @RestController bean 已经存在时,使用 @Bean 创建的 bean 不会自动装配

问题描述

Foo.java

        @RestController
        @RequestMapping("/foo")
        public class Foo{

        @Autowired
        Bar bar;

        @RequestMapping("/beanTest")
        public void beanTest() {
            System.out.println("Foo's Bar is "+bar);
        }   
        }

酒吧.java

  @RestController
  class Bar{ }

配置文件

   @Configuration

   public class Config {

    @Bean
    public Bar getBar() {

        Bar bar=new Bar();
        System.out.println("@Bean Bar is "+bar);
        return bar;

    }
}

问题:
问题是我们有 2 个 Bar beans 1 为 @RestController 创建,其他由 @Bean 创建。现在,当我们使用 @Autowired 注释自动装配 Bar 时,@Bean 创建的 bean 没有被注入,而另一个被拾取,为什么?据我说,这里有 2 个使用应用程序上下文注册的相同类型 Bar 应用程序的 bean 应该失败,因为它应该无法决定注入哪一个。

OUTPUT :

@Bean Bar is com.example.practiceBoot.controller.Bar@56e07a08

Foo's Bar is com.example.practiceBoot.controller.Bar@6ae18a78

标签: javaspringspring-annotations

解决方案


推荐阅读