当前位置: 首页 > news >正文

关于spring @Bean里调用其他产生bean的方法

背景

常常见到如下代码

@Bean
public TestBean testBean() {TestBean t = new TestBean();System.out.println("testBean:" + t);return t;
}@Bean
public FooBean fooBean() {TestBean t = testBean();System.out.println("这里看似是自己new的,但因为当前fooBean被spring容器管理,所以里面" + t);return new FooBean(t);
}

即在 @Bean 方法里调用另外一个产生bean的方法 fooBean(),这看着像java里的内部调用

很正常会怀疑,这不就是自己手工又创建了一个bean?会不会跟spring容器创建的那个不一样? 会不会重复创建?

实际是不会的,因为 fooBean() 本身也是被 @Bean 标注的,所以spring容器会在你调用 testBean() 的时候知道容器里已经有TestBean实例,所以会把已经存在的那个TestBean返回给 t 变量

实际测试打印的日志,哈希码是一样的,能证明是同一个对象

但是下面结论不一样

@Bean
public TestBean testBean() {TestBean t = new TestBean();System.out.println("testBean:" + t);return t;
}@Bean
public FooBean fooBean() {TestBean t = newTest();System.out.println("这里看似是自己new的,但因为当前fooBean被spring容器管理,所以里面" + t);return new FooBean(t);
}public TestBean newTest() {return new TestBean();
}

相关文章:

  • vFile文件的精读
  • 酷柚易汛ERP仓储物流解决方案
  • 怎样把B站的视频保存到本地
  • NodeRAG: 基于异构节点的基于图的RAG结构
  • 红黑树简单模拟实现
  • 复杂度讲解
  • 金融科技应用:基于XGBoost与SHAP的信用评分模型构建全流程解析
  • 【项目需求分析文档】:在线音乐播放器(Online-Music)
  • 串扰与反射对信号完整性的影响
  • 大数据治理:理论、实践与未来展望(二)
  • QWidget类关系图
  • 地理特征类相关可视化图像总结
  • Windows逆向工程提升之IMAGE_RESOURCE_DIRECTORY
  • Java 垃圾回收
  • 光模块(Optical Module)的工作原理、技术参数、应用场景及行业趋势
  • 【MPC控制 - 从ACC到自动驾驶】2 车辆纵向动力学建模与离散化:MPC的“数字蓝图”
  • Python学习心得:代码森林的冒险
  • 【笔记】关于synchronized关键字的底层原理之我流理解(未完)
  • 2024 CKA模拟系统制作 | Step-By-Step | 4、题目搭建-权限控制RBAC
  • Netty学习专栏(三):Netty重要组件详解(Future、ByteBuf、Bootstrap)
  • 注册传媒公司流程和费用/自动app优化最新版
  • wordpress免费主题模板/seo网络推广机构
  • 云服务器和网站备案吗/互联网营销推广渠道
  • 灰色词秒收录代发/百度seo收费
  • 一个网站备案多个域名吗/长沙seo管理
  • 孝义网站建设/营销渠道模式有哪些