溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java?Spring讀取和存儲(chǔ)實(shí)例分析

發(fā)布時(shí)間:2022-08-05 09:59:52 來(lái)源:億速云 閱讀:137 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“Java Spring讀取和存儲(chǔ)實(shí)例分析”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Java Spring讀取和存儲(chǔ)實(shí)例分析”文章能幫助大家解決問(wèn)題。

    存儲(chǔ)bean對(duì)象

    之前我們存儲(chǔ)bean對(duì)象時(shí),需要在配置文件中加入一行bean才能進(jìn)行注入

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    這種注入方式并不好,如果配置文件出了錯(cuò),程序是不會(huì)顯示錯(cuò)誤信息的。這對(duì)初學(xué)者來(lái)說(shuō)很不友好。

    1.創(chuàng)建項(xiàng)目

    創(chuàng)建啟動(dòng)類和main方法

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    引入依賴

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    <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>

    創(chuàng)建配置文件

    我們約定好創(chuàng)建的bean對(duì)象放在com.bean包下:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    <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的核心就是使用注解,我們學(xué)習(xí)的注解有5個(gè)

    @Controller 【控制器】@Service 【服務(wù)】@Repository 【倉(cāng)庫(kù)】@Configuration 【配置/布局】@Component 【組件】 2.1 controller

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    我們之前能夠通過(guò)傳入id參數(shù)來(lái)獲取對(duì)象,但那是加了一行bean手動(dòng)加入的id,但現(xiàn)在我們使用了注解,難道就只能使用類類型來(lái)獲取嗎?

    我們使用注解注入bean對(duì)象時(shí),id其實(shí)默認(rèn)是類名的小駝峰形式:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    原因先不解釋,后面會(huì)說(shuō)。

    容易犯的錯(cuò):
    我們之前在配置文件中加入了bean對(duì)象查找的根目錄,意味著會(huì)從這個(gè)目錄開(kāi)始向下搜索,但不會(huì)向上:

    下級(jí)目錄

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    上級(jí)目錄

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.2 Service

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.3 Repository

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.4 Configuration

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.5 Component

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.6 為什么會(huì)有5大類注解

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    在公司中每個(gè)人負(fù)責(zé)的領(lǐng)域不同,因此使用的類注解也是不同的,但五大類注解本質(zhì)都是一樣的。

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    我們通過(guò)兩個(gè)類注解就能清楚的看到,其他四個(gè)注解都是引入了Component注解的方法,也就是說(shuō)Component是其他四個(gè)類注解的父親。那么Component是干嘛的呢?就是不好分到其他四個(gè)類注解時(shí)丟給它的~

    2.7 id為什么默認(rèn)是小駝峰

    們使用全局搜索:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    查找AnnotationBeanNameGenerator:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    測(cè)試:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.8使用bean注解

    bean注解是一個(gè)方法注解,當(dāng)對(duì)一個(gè)方法使用時(shí),返回的對(duì)象也會(huì)被Spring注入,但需要配合五大類注解使用(任意一個(gè)都行)

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    id就是方法名。

    2.8.1 bean重命名

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    2.8.2重命名多個(gè)

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    注意:當(dāng)使用name屬性重命名后,原本的方法名將失去作用,也就是說(shuō)只能使用那么修改后的名字作為id了。

    獲取bean對(duì)象

    獲取bean對(duì)象也叫對(duì)象注入,其有以下3種方法:

    • 屬性注入

    • 構(gòu)造方法注入

    • Setter注入

    1.屬性注入

    1.1 Autowired

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    雖然現(xiàn)在看起來(lái)沒(méi)什么問(wèn)題,但是當(dāng)我們對(duì)同一類型的對(duì)象進(jìn)行了多次注入:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    此時(shí)就需要精準(zhǔn)定位所選擇的對(duì)象了,需要類型+名字:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    1.2Resource

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    1.3二者區(qū)別

    Resource有個(gè)name 屬性,可以指定注入bean的名稱

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    但Autowired也有個(gè)搭配注解,@Qualifier,一樣可以指定選擇的bean對(duì)象,所以二者之間嘛,我覺(jué)得打成平手

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    ps:Autowired注解一開(kāi)始是要進(jìn)行查詢所有類型為所需注入的對(duì)象的類型,但Autowired一次只能注入一個(gè)對(duì)象,因此當(dāng)統(tǒng)一類型的對(duì)象注入多次后會(huì)報(bào)錯(cuò)。而Qualifier注解本質(zhì)上是對(duì)其所查詢的結(jié)果進(jìn)行篩選。

    2.構(gòu)造方法注入

    還是使用Autowired注解:

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    ps:當(dāng)只有一個(gè)構(gòu)造方法時(shí),Autowired可以省略

    但當(dāng)有兩個(gè)以上時(shí)不能省略

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Setter注入

    還是通過(guò)Autowired

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    Resource也支持Setter注入。

    經(jīng)典面試題

    屬性注入、構(gòu)造方法注入、Setter注入有什么區(qū)別?

    Java?Spring讀取和存儲(chǔ)實(shí)例分析

    關(guān)于“Java Spring讀取和存儲(chǔ)實(shí)例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI