java - 当 @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
解决方案
推荐阅读
- ruby-on-rails - 根据 Rails 条件返回设计错误
- f# - 使用 TPL 的代码是否有更 F# 的惯用方式?
- python - Pandas:根据其他列的用户输入值进行过滤
- python - 剥离基于 python 的项目构建的共享库的最简单方法是什么?
- php - 我需要使用第三方在 Google Cloud Instance 中使用 php 邮件功能吗?
- java - 创建 n 个线程
- angular - 为什么 Angular 模板中的这个传统 HTML 表单不能提交?
- javascript - JS 中的箭头和词法范围
- javascript - d3 力图中的链接距离不正确
- dependency-injection - 如何使用依赖注入在 Elixir 中注入 IO.gets 输入?