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!

推薦閱讀: