關于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();
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82168.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Level1.7列表

1.7_1列表(索引切片) #1.列表 students[Bob,Alice,Jim,Mike,Judy] print(students)#2.在列表(添加不同數據類型,查看列表是否可以運行?是否為列表類型?) students[Bob,Alice,Jim,Mike,Judy,123…

Python爬蟲實戰:研究Cola框架相關技術

一、Cola 框架概述 Cola 是一款基于 Python 的異步爬蟲框架,專為高效抓取和處理大規模數據設計。它結合了 Scrapy 的強大功能和 asyncio 的異步性能優勢,特別適合需要高并發處理的爬蟲任務。 1.1 核心特性 異步 IO 支持:基于 asyncio 實現非阻塞 IO,大幅提高并發性能模塊…

vue2中el-table 實現前端分頁

一些接口不分頁的數據列表,一次性返回大量數據會導致前端渲染卡頓,接口不做分頁的情況下前端可以截取數據來做分頁 以下是一個例子,被截取的列表和全量數據在同一個棧內存空間,所以如果有表格內的表單編輯,新的值也會事…

Python + moviepy:根據圖片或數據高效生成視頻全流程詳解

前言 在數據可視化、自媒體內容生產、學術匯報等領域,我們常常需要將一組圖片或一段變動的數據,自動合成為視頻文件。這樣不僅能提升內容表現力,也極大節省了人工操作時間。Python作為數據處理和自動化領域的王者,其`moviepy`庫為我們提供了靈活高效的視頻生成方案。本文將…

科技賦能,開啟現代健康養生新潮流

在科技與生活深度融合的當下,健康養生也迎來了全新的打開方式。無需傳統醫學的介入,借助現代科學與智能設備,我們能以更高效、精準的方式守護健康。? 飲食管理步入精準化時代。利用手機上的營養計算 APP,錄入每日飲食&#xff0…

Ubuntu24.04 LTS安裝java8、mysql8.0

在 Ubuntu 24.04 上安裝 OpenJDK OpenJDK 包在 Ubuntu 24.04 的默認存儲庫中隨時可用。 打開終端并運行以下 apt 命令: sudo apt update查看是否已經安裝java java --version如果未安裝會有提示,直接復制命令安裝即可,默認版本: sudo apt in…

深度學習框架顯存泄漏診斷手冊(基于PyTorch的Memory Snapshot對比分析方法)

點擊 “AladdinEdu,同學們用得起的【H卡】算力平臺”,H卡級別算力,按量計費,靈活彈性,頂級配置,學生專屬優惠。 一、顯存泄漏:深度學習開發者的"隱形殺手" 在深度學習模型的訓練與推…

Pytorch分布式訓練,數據并行,單機多卡,多機多卡

分布式訓練 所有代碼可以見我github 倉庫:https://github.com/xiejialong/ddp_learning.git 數據并行(Data Parallelism,DP) 跨多個gpu訓練模型的最簡單方法是使用 torch.nn.DataParallel. 在這種方法中,模型被復制…

【論文閱讀】——D^3-Human: Dynamic Disentangled Digital Human from Monocular Vi

文章目錄 摘要1 引言2 相關工作3 方法3.1 HmSDF 表示3.2 區域聚合3.3. 變形場3.4. 遮擋感知可微分渲染3.5 訓練3.5.1 訓練策略3.5.2 重建損失3.5.3 正則化限制 4. 實驗4.1 定量評估4.2 定性評價4.3 消融研究4.4 應用程序 5 結論 摘要 我們介紹 D 3 D^{3} D3人,一種…

docker commit除了提交容器成鏡像,還能搞什么之修改cmd命令

要讓新鏡像默認啟動時執行 /usr/sbin/sshd -D,需在提交鏡像時 ??顯式指定新的啟動命令??。 方法一:提交時通過 --change 覆蓋 CMD docker commit --changeCMD ["/usr/sbin/sshd", "-D"] v2 project:v2 方法二:重…

為什么我輸入對了密碼,還是不能用 su 切換到 root?

“為什么我輸入對了密碼,還是不能用 su 切換到 root?” 其實這背后可能不是“密碼錯了”,而是系統不允許你用 su 切 root,即使密碼對了。 👇 以下是最常見的幾個真正原因: ? 1. Root 用戶沒有設置密碼&…

轉移dp簡單數學數論

1.轉移dp問題 昨天的練習賽上有一個很好玩的起終點問題,第一時間給出bfs的寫法。 但是寫到后面發現不行,還得是的dp轉移的寫法才能完美的解決這道題目。 每個格子可以經過可以不經過,因此它的狀態空間是2^(n*m)&…

IP查詢基礎介紹

IP 查詢原理 IP 地址是網絡設備唯一標識,IP 查詢通過解析 IP 地址獲取地理位置、運營商等信息。目前主流的 IPv4(32 位)與 IPv6(128 位)協議,前者理論提供約 43 億地址,后者地址空間近乎無限。…

Linux命令簡介

1 Linux系統的命令概述 在 Linux 操作系統中,凡是在字符操作界面中輸入能夠完成特定操作和任務的字符串都可以稱為命令。嚴格來說,命令通常只代表實現某一類功能的指令或程序的名稱。 1.1 Shell Linux 命令的執行必須依賴于 Shell 命令解釋器。Shell …

WebRTC與RTSP|RTMP的技術對比:低延遲與穩定性如何決定音視頻直播的未來

引言 音視頻直播技術已經深刻影響了我們的生活方式,尤其是在教育、醫療、安防、娛樂等行業中,音視頻技術成為了行業發展的重要推動力。近年來,WebRTC作為一種開源的實時通信技術,成為了音視頻領域的重要選擇,它使得瀏覽…

多通道振弦式數據采集儀MCU安裝指南

設備介紹 數據采集儀 MCU集傳統數據采集器與5G/4G,LoRa/RS485兩種通信功能與一體的智能數據采集儀。該產品提供振弦、RS-485等的物理接口,能自動采集并存儲多種自然資源、建筑、橋梁、城市管廊、大壩、隧道、水利、氣象傳感器的實時數據,利用現場采集的數…

Vue3 + Element Plus表格篩選樣式設置

如果彈出框掛載在 body 下(而非組件內部),scoped 樣式無法生效,這時就需要使用全局樣式。 強制全局樣式 1、添加全局樣式文件(或在原有的文件中添加以下內容) src/assets/global.scss /* 全局強制樣式覆…

vue--ofd/pdf預覽實現

背景 實現預覽ofd/pdf超鏈接功能 業務實現 pdf的預覽 實現方式&#xff1a; 直接使用 <iframe :src"${url}#navpanes0&toolbar0" /> 實現pdf的預覽。 navpanes0 隱藏側邊欄toolbar0 隱藏頂部工具欄 使用pdf.js&#xff0c;代碼先行&#xff1a; <tem…

【C++20新特性】ranges::sort()使用方法,優勢,注意點

以下是關于 ranges::sort() 的詳細說明&#xff1a; 1. ranges::sort() 的使用方法 ranges::sort() 是 C20 引入的基于范圍&#xff08;Ranges&#xff09;的排序函數&#xff0c;其語法更簡潔&#xff0c;支持直接操作容器或范圍對象。 (1)基本用法 #include <vector&g…

深入理解設計模式之適配器模式

深入理解設計模式之適配器模式 1. 適配器模式概述 適配器模式(Adapter Pattern)是一種結構型設計模式&#xff0c;它允許將一個類的接口轉換為客戶端所期望的另一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的類能夠協同工作&#xff0c;扮演了"轉換器&quo…