大白話講解Spring的 bean註解

2021-10-03 01:44:53 字數 2267 閱讀 7323

從廣義上spring註解可以分為兩類:

一類註解是用於註冊bean

假如ioc容器就是一間空屋子,首先這間空屋子啥都沒有,我們要吃大餐,我們就要從外部搬運食材和餐具進來。這裡把某一樣食材或者某一樣餐具搬進空屋子的操作就相當於每個註冊bean的註解作用類似。註冊bean的註解作用就是往ioc容器中放(註冊)東西!

用於註冊bean的註解: 比如@component , @repository , @ controller , @service , @configration這些註解就是用於註冊bean,放進ioc容器中,一來交給spring管理方便解耦,二來還可以進行二次使用,啥是二次使用呢?這裡的二次使用可以理解為:在你開始從外部搬運食材和餐具進空屋子的時候,一次性搬運了豬肉、羊肉、鐵勺、筷子四樣東西,這個時候你要開始吃大餐,首先你吃東西的時候肯定要用筷子或者鐵勺,別說你手抓,只要你需要,你就會去找,這個時候發現你已經把筷子或者鐵勺放進了屋子,你就不用再去外部拿筷子進屋子了,意思就是ioc容器中已經存在,就可以只要拿去用,而不必再去註冊!而拿屋子裡已有的東西的操作就是下面要講的用於使用bean的註解!

一類註解是用於使用bean

用於使用bean的註解:比如@autowired , @resource註解,這些註解就是把屋子裡的東西自己拿來用,如果你要拿,前提一定是屋子(ioc)裡有的,不然就會報錯,比如你要做一道牛肉拼盤需要五頭牛做原材料才行,你現在鍋裡只有四頭牛,這個時候你知道,自己往屋子裡搬過五頭牛,這個時候就直接把屋子裡的那頭牛直接放進鍋裡,完成牛肉拼盤的組裝。是的這些註解就是需要啥想要啥,只要容器中有就往容器中拿!而這些註解又有各自的區別,比如@autowired用在筷子上,這筷子你可能只想用木質的,或許只想用鐵質的,@autowired作用在什麼屬性的筷子就那什麼筷子,而@resource如果用在安格斯牛肉上面,就指定要名字就是安格斯牛肉的牛肉。

本篇文章主要講的是@bean註解,這個註解屬於用於註冊bean的註解。

下面這段話部分摘自spring中為什麼要有@bean註解?

spring的@bean註解用於告訴方法,產生乙個bean物件,然後這個bean物件交給spring管理。 產生這個bean物件的方法spring只會呼叫一次,隨後這個spring將會將這個bean物件放在自己的ioc容器中。@bean明確地指示了一種方法,什麼方法呢?產生乙個bean的方法,並且交給spring容器管理;從這我們就明白了為啥@bean是放在方法的注釋上了,因為它很明確地告訴被注釋的方法,你給我產生乙個bean,然後交給spring容器,剩下的你就別管了。記住,@bean就放在方法上,就是讓方法去產生乙個bean,然後交給spring容器。

如下就能讓accountdao方法產生乙個accountdao 物件,然後這個accountdao 物件交給spring管理

class a

}

實際上,@bean註解和xml配置中的bean標籤的作用是一樣的。

不知道大家有沒有想過,用於註冊bean的註解的有那麼多個,為何還要出現@bean註解?

原因很簡單:類似@component , @repository , @ controller , @service 這些註冊bean的註解存在侷限性,只能侷限作用於自己編寫的類,如果是乙個jar包第三方庫要加入ioc容器的話,這些註解就手無縛雞之力了,是的,@bean註解就可以做到這一點!當然除了@bean註解能做到還有@import也能把第三方庫中的類例項交給spring管理,而且@import更加方便快捷,只是@import註解並不在本篇範圍內,這裡就不再概述。

使用@bean註解的另乙個好處就是能夠動態獲取乙個bean物件,能夠根據環境不同得到不同的bean物件。

1、spring的@bean註解用於告訴方法,產生乙個bean物件,然後這個bean物件交給spring管理。 產生這個bean物件的方法spring只會呼叫一次,隨後這個spring將會將這個bean物件放在自己的ioc容器中。

2、@component , @repository , @ controller , @service 這些註解只侷限於自己編寫的類,而@bean註解能把第三方庫中的類例項加入ioc容器中並交給spring管理。

3、@bean註解的另乙個好處就是能夠動態獲取乙個bean物件,能夠根據環境不同得到不同的bean物件。

4、、記住,@bean就放在方法上,就是讓方法去產生乙個bean,然後交給spring容器,剩下的你就別管了。

當然這裡並沒有講到@bean註解的具體細節,只是描述了乙個大概,如有其它需求可自行谷歌....

end.....

大白話講解ThreadLocal的原理

threadlocal顧名思義,本地執行緒,可以理解為本地執行緒變數,說白了就是操作本地執行緒的區域性變數。下面我們通過原始碼進行說明 首先,我們看一下threadlocal的set方法原始碼實現 public void set t value 通過原始碼我們可以發現,首先獲取了當前執行緒,然後呼叫...

大白話講解C 中的委託

有一天,你寫了好多好多帶 形參 的建構函式 就是 方法 同義 而且需要向這些建構函式裡傳遞同樣的 實參 然後你就憨憨地乙個乙個函式的呼叫並賦予同樣的 實參 這一天就這麼過去了.又過了幾天,你又要再一次呼叫這麼多函式了,你再老老實實地乙個乙個函式進行呼叫?聰明的你,肯定會想 真tm麻煩!有沒有一勞永逸...

mysql用大白話解釋 大白話說說mysql索引

前面其實寫了好幾篇關於 mysql 索引的文章了,文章中有具體的例項和 sql 語句,這篇文章我想再用純大白話講講 mysql 索引,文中不涉及具體 sql 我之前甚至想過為啥要用資料庫來儲存資料,用普通的 txt 或者 word 這類檔案不行麼,這個問題其實可以從幾個方面來看,乙個是併發訪問資料加...