Java Spring讀取和存儲詳細操作
前言
但在操作的過程中我們發現讀取和存儲對象並沒有想象中的那麼“簡單”,所以接下來我們要學習更加簡單的操作 Bean 對象的⽅法。
存儲bean對象
之前我們存儲bean對象時,需要在配置文件中加入一行bean才能進行註入
這種註入方式並不好,如果配置文件出瞭錯,程序是不會顯示錯誤信息的。這對初學者來說很不友好。
1.創建項目
創建啟動類和main方法
引入依賴
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.3.RELEASE</version> </dependency> </dependencies>
創建配置文件
我們約定好創建的bean對象放在com.bean包下:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.3.RELEASE</version> </dependency> </dependencies>
2.添加註解將bean存入到容器中
使用Spring的核心就是使用註解,我們學習的註解有5個
@Controller 【控制器】@Service 【服務】@Repository 【倉庫】@Configuration 【配置/佈局】@Component 【組件】 2.1 controller
我們之前能夠通過傳入id參數來獲取對象,但那是加瞭一行bean手動加入的id,但現在我們使用瞭註解,難道就隻能使用類類型來獲取嗎?
我們使用註解註入bean對象時,id其實默認是類名的小駝峰形式:
原因先不解釋,後面會說。
容易犯的錯
:
我們之前在配置文件中加入瞭bean對象查找的根目錄,意味著會從這個目錄開始向下搜索,但不會向上:
下級目錄
上級目錄
2.2 Service
2.3 Repository
2.4 Configuration
2.5 Component
2.6 為什麼會有5大類註解
在公司中每個人負責的領域不同,因此使用的類註解也是不同的,但五大類註解本質都是一樣的。
我們通過兩個類註解就能清楚的看到,其他四個註解都是引入瞭Component註解的方法,也就是說Component是其他四個類註解的父親。那麼Component是幹嘛的呢?就是不好分到其他四個類註解時丟給它的~
2.7 id為什麼默認是小駝峰
我們使用全局搜索:
查找AnnotationBeanNameGenerator:
測試:
2.8使用bean註解
bean註解是一個方法註解,當對一個方法使用時,返回的對象也會被Spring註入,但需要配合五大類註解使用(任意一個都行)
id就是方法名。
2.8.1 bean重命名
2.8.2重命名多個
註意
:當使用name屬性重命名後,原本的方法名將失去作用,也就是說隻能使用那麼修改後的名字作為id瞭。
獲取bean對象
獲取bean對象也叫對象註入,其有以下3種方法:
- 屬性註入
- 構造方法註入
- Setter註入
1.屬性註入
1.1 Autowired
雖然現在看起來沒什麼問題,但是當我們對同一類型的對象進行瞭多次註入:
此時就需要精準定位所選擇的對象瞭,需要類型+名字
:
1.2Resource
1.3二者區別
Resource有個name 屬性,可以指定註入bean的名稱
但Autowired也有個搭配註解,@Qualifier,一樣可以指定選擇的bean對象,所以二者之間嘛,我覺得打成平手
ps
:Autowired註解一開始是要進行查詢所有類型為所需註入的對象的類型,但Autowired一次隻能註入一個對象,因此當統一類型的對象註入多次後會報錯。而Qualifier註解本質上是對其所查詢的結果進行篩選。
2.構造方法註入
還是使用Autowired註解:
ps
:當隻有一個構造方法時,Autowired可以省略
但當有兩個以上時不能省略
Setter註入
還是通過Autowired
Resource
也支持Setter註入。
經典面試題
屬性註入、構造方法註入、Setter註入有什麼區別?
到此這篇關於Spring讀取和存儲詳細操作的文章就介紹到這瞭,更多相關Spring讀取和存儲內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Spring更簡單的存儲方式與獲取方式詳解
- Spring五大類註解讀取存儲Bean對象的方法
- Java經典面試題匯總:Spring
- 如何使用Spring-Test對Spring框架進行單元測試
- SpringBoot對不同Bean註解的區別和使用場景說明