Bean的管理

1.主動獲取Bean

?spring項目在需要時,會自動從IOC容器中獲取需要的Bean

我們也可以自己主動的得到Bean對象?

(1)獲取bean對象,首先獲取SpringIOC對象

private ApplicationContext applicationContext? ?//IOC容器對象?

(2 )方法1:根據名稱獲取bean

創建bean對象,沒有指定名稱時,默認就是 bean的名稱 就是?類名的首字母小寫

直接獲取得到的是Object對象,需要強轉

三次運行都只得到一個Bean,說明Bean對象默認是單例的



2.bean的作用域:(知道這兩種就行了)

單例的:容器內只有一個單例的Bean

非單例的:每次使用都創建新的bean

下面三種只在web環境中才有,不重要

可以通過@Lazy來延遲加載bean,只有第一次使用時,才會初始化這個bean。(使用不多)



3.第三方bean的配置

我們聲明自己的bean對象是用這幾個注解,自己的bean對象就是自己寫的類,將自己的bean對象交給IOC容器管理,加上這幾個注解及其衍生注解

場景:

dem4j是用來解析xml文件的,

我們想要用的話,第一步,先在pom中加入這個dom4j這個依賴

第二步,可以在類中new一個SAXReader對象,然后調用方法就可以使用了

但是我們都是用Spring框架了,這樣使用太麻煩了,我們可以把SAXReader交給IOC容器去管理,每次用的時候,直接注入就好了。但是發現SAXReader類并沒有加上@component注解生成bean對象,且是只讀文件,我們也加不了

所以,我們使用第三方的bean對象,就不能像之前的做法,直接在類上加@component注解生成bean對象了

解決方法:使用第三方的bean

在啟動類上加上一個方法(方法名就是第三方類交給IOC管理的bean對象的bean的默認名稱),方法返回值(這個類的對象)交給IOC容器管理,成為bean對象。

這個方法必須加上@Bean注解

這樣,在其他地方使用這個對象,使用@Autowired注入進來就可以了

和main方法是平行的

但是呢?如果都加到啟動類中,啟動類就變復雜了,要保證啟動類的純潔,不建議加在啟動類中寫多余的代碼

我們建議在配置類(@Configration)中聲明這樣一個類,集中管理第三方的bean注入。

在配置類上加上一個方法(方法名是隨意的),方法返回值(這個類的對象)交給IOC容器管理,成為bean對象。如果有多個第三方的bean,再定義一個方法,重復這個過程,就可以了

驗證:方法名就是 IOC容器中bean的名稱

測試:通過主動獲取bean對象方法,通過bean的名稱獲取bean對象,看看能不能獲取到?

獲取到了,說明? 方法名就是 IOC容器中bean的名稱



注入第三方bean的時候,如何解決依賴注入的問題?寫到形參里就可以了

場景:如果我們在注入第三方bean(SAXReader)的時候,SAXReader還依賴DeptService的bean,怎么辦?

只需要把DeptService放到形參的位置,spring就會自動注入DeptService的bean以幫助我們注入第三方bean(SAXReader)

不需要@Autowired手動裝配

總結:

(1)如果是自己定義的類,想交給IOC容器管理,就是用@Component注解及其衍生注解

(2)如果是引入第三方的類,想交給IOC容器管理,,并且源碼中沒有加@Component注解,源碼文件又只讀不可寫,我們也加不了,就要使用@Bean注解,放到配置類中,交給IOC容器管理

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

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

相關文章

昇思25天學習打卡營第13天 | ShuffleNet圖像分類

ShuffleNet網絡介紹 ShuffleNetV1是曠視科技提出的一種計算高效的CNN模型,和MobileNet, SqueezeNet等一樣主要應用在移動端,所以模型的設計目標就是利用有限的計算資源來達到最好的模型精度。ShuffleNetV1的設計核心是引入了兩種操作:Pointw…

ExcelVBA運用Excel的【條件格式】(二)

ExcelVBA運用Excel的【條件格式】(二)前面知識點回顧1. 訪問 FormatConditions 集合 Range.FormatConditions2. 添加條件格式 FormatConditions.Add 方法語法表達式。添加 (類型、 運算符、 Expression1、 Expression2)3. 修改或刪除條件格式4. …

如何在Spring Boot中實現動態多語言支持

如何在Spring Boot中實現動態多語言支持 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 一、引言 隨著全球化市場的發展,多語言支持已經成為現代…

密碼技術中分組模式解析

目錄 1. 概述 2. ECB模式 2.1 概述 2.2 ECB模式的加密 2.3 ECB模式的解密 2.4 優點 2.5 缺點 3. CBC模式【推薦】 3.1 概述 3.2 CBC模式的加密 3.3 CBC模式的解密 3.4 優點 3.5 缺點 4. CFB模式 4.1 概述 4.2 CFB模式的加密 4.3 CFB模式的解密 4.4 優點 4.…

智慧地產視覺監控系統開源了,系統采用多種優化技術,提高系統的響應速度和資源利用率

智慧地產視覺監控平臺是一款功能強大且簡單易用的實時算法視頻監控系統。它的愿景是最底層打通各大芯片廠商相互間的壁壘,省去繁瑣重復的適配流程,實現芯片、算法、應用的全流程組合,從而大大減少企業級應用約95%的開發成本。用戶只需在界面上…

Python打開Excel文檔并讀取數據

Python 版本 目前 Python 3 版本為主流版本,這里測試的版本是:Python 3.10.5。 常用庫說明 Python 操作 Excel 的常用庫有:xlrd、xlwt、xlutils、openpyxl、pandas。這里主要說明下 Excel 文檔 .xls 格式和 .xlsx 格式的文檔打開和讀取。 …

Drools開源業務規則引擎(二)- Drools規則語言(DRL)

文章目錄 1.DRL文件的組成:2.package3.import4.function5.query6.declare7.global8.rule8.1.規則屬性8.2.LHS8.2.1.語法格式8.2.2.運算符優先級8.2.3.特殊的運算符1.matches, not matches2.contains, not contains3.memberOf, not memberOf4.in, notin5.soundslike6…

Powershell 獲取電腦保存的所有wifi密碼

一. 知識點 netsh wlan show profiles 用于顯示計算機上已保存的無線網絡配置文件 Measure-Object 用于統計數量 [PSCustomObject]{ } 用于創建Powershell對象 [math]::Round 四舍五入 Write-Progress 顯示進度條 二. 代碼 只能獲取中文Windows操作系統的wifi密碼如果想獲取…

護網在即,助力安服仔漏洞掃描~

整合了個漏掃系統,安服仔必備~ 使用場景 網前布防,漏洞掃描,資產梳理 使用方法: 啟動虛擬機后運行命令: ./StartSystemScript.sh 輸入密碼attack 啟動完成后瀏覽器打開網站: http://IP:5000 相關賬戶…

Git 常用命令備忘

1、刪除 (1)、git push origin --delete dev 刪除遠程分支 (2)、git branch -d dev 刪除本地分支 git branch -D dev 強制刪除本地分支 2、創建分支 (1)、git checkout -b dev 創建本地分支 (2)、git push origin dev 創建遠程分支,此時本地分支與遠程…

02-android studio實現下拉列表+單選框+年月日功能

一、下拉列表功能 1.效果圖 2.實現過程 1&#xff09;添加組件 <LinearLayoutandroid:layout_width"match_parent"android:layout_height"wrap_content"android:layout_marginLeft"20dp"android:layout_marginRight"20dp"android…

表單驗證的藝術:WebKit 支持 HTML 表單的全面解析

表單驗證的藝術&#xff1a;WebKit 支持 HTML 表單的全面解析 在 Web 開發的多彩世界中&#xff0c;表單是用戶與網頁交互的重要橋梁。WebKit 作為眾多現代瀏覽器的渲染引擎&#xff0c;提供了強大的 HTML 表單支持和驗證功能。本文將深入探討 WebKit 如何支持 HTML 表單和進行…

力扣225題解析:使用隊列實現棧的三種解法(Java實現)

引言 在算法和數據結構中&#xff0c;如何用隊列實現棧是一個常見的面試題和實際應用問題。本文將探討力扣上的第225題&#xff0c;通過不同的方法來實現這一功能&#xff0c;并分析各種方法的優劣和適用場景。 問題介紹 力扣225題目要求我們使用隊列實現棧的下列操作&#…

【CMake】基本概念和快速入門

#1. install 是什么 在CMake或項目構建中&#xff0c;install步驟通常指的是將生成的可執行文件、庫文件、頭文件和其他資源復制到指定的安裝目錄&#xff0c;以便進行發布、部署或在其他項目中使用。這個過程通常包括以下內容&#xff1a; 1. 安裝目標 安裝目標是指需要安裝…

運維系列.Nginx中使用HTTP壓縮功能

運維專題 Nginx中使用HTTP壓縮功能 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…

【刷題匯總--字符串中找出連續最長的數字串、島嶼數量、拼三角】

C日常刷題積累 今日刷題匯總 - day0071、字符串中找出連續最長的數字串1.1、題目1.2、思路1.3、程序實現 -- 比較1.4、程序實現 -- 雙指針 2、島嶼數量2.1、題目2.2、思路2.3、程序實現 - dfs 3、拼三角3.1、題目3.2、思路3.3、程序實現 -- 蠻力法3.4、程序實現 -- 巧解(單調性…

pwm 呼吸燈(如果燈一直亮或者一直滅)

&#xff08;這個文章收藏在我的csdn keil文件夾下面&#xff09; 如果這樣設置預分頻和計數周期&#xff0c;那么算出來的pwm頻率如下 人眼看起來就只能是一直亮或者滅&#xff0c;因為pwm的頻率太高了&#xff0c;但是必須是頻率夠高&#xff0c;才能實現呼吸燈的緩慢亮緩慢…

SPL-404:如何徹底改變Solana上的NFT與DeFi

在不斷發展的數字資產領域中&#xff0c;非同質化Token&#xff08;NFT&#xff09;已成為一股革命性力量&#xff0c;徹底改變了我們對數字所有權的看法和互動方式。從藝術和收藏品到游戲和虛擬房地產&#xff0c;NFT吸引了創作者、投資者和愛好者的想象力。 本指南將帶您進入…

MySQL數據庫文件在Linux下存放位置

數據庫文件默認在&#xff1a;cd /usr/share/mysql 配置文件默認在&#xff1a;/etc/my.cnf 數據庫目錄&#xff1a;/var/lib/mysql/ 配置文件&#xff1a;/usr/share/mysql(mysql.server命令及配置文件) 相關命令&#xff1a;/usr/bin(mysqladmin、mysqldump等命令)(*mysql的一…

MyBatisPlus-分頁插件的基本使用

目錄 配置插件 使用分頁API 配置插件 首先&#xff0c;要在配置類中注冊MyBatisPlus的核心插件&#xff0c;同時添加分頁插件。&#xff08;可以放到config軟件包下&#xff09; 可以看到&#xff0c;我們定義了一個配置類&#xff0c;在配置類里聲明了一個Bean,這個Bean的名…