最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring框架學(xué)習(xí)之Spring?@Autowired實(shí)現(xiàn)自動(dòng)裝配的代碼

 更新時(shí)間:2021年12月31日 16:46:16   作者:陳玉林  
自動(dòng)裝配就是說,你不用手動(dòng)實(shí)現(xiàn)bean之間的組合關(guān)系,只要使用了@Autowired注解,程序就會(huì)自動(dòng)的注入這個(gè)需要的bean,前提是你的Spring容器有這個(gè)bean,這篇文章主要介紹了Spring?@Autowired實(shí)現(xiàn)自動(dòng)裝配,需要的朋友可以參考下

學(xué)習(xí)自動(dòng)裝配之前,講一個(gè)概念:Component,即組件。組件你也可以理解為bean對(duì)象,只不過通常Component的組成會(huì)稍微復(fù)雜一些,比如,一個(gè)組件里面會(huì)引用一個(gè)或多個(gè)別的bean對(duì)象,組件的定義方式也不一樣。自動(dòng)裝配貌似就是為組件而生的。

自動(dòng)裝配(Autowired)這個(gè)概念,如果你已經(jīng)使用過SpringMVC或者SpringBoot做開發(fā),你會(huì)發(fā)現(xiàn)@Autowired注解是特別經(jīng)常使用到的。比如你的Controller、Service相關(guān)的類里面就會(huì)經(jīng)常用到。如果你看過@Controller或者@Service的定義,你會(huì)發(fā)現(xiàn)這兩個(gè)注解也是使用了@Component注解的,就是說這兩個(gè)注解也是Component。

自動(dòng)裝配就是說,你不用手動(dòng)實(shí)現(xiàn)bean之間的組合關(guān)系,只要使用了@Autowired注解,程序就會(huì)自動(dòng)的注入這個(gè)需要的bean,前提是你的Spring容器有這個(gè)bean。我們來看個(gè)例子。

這個(gè)例子是這么回事,我定義了一個(gè)Car接口,里面有一個(gè)run()方法,然后我定義了一個(gè)BaoMaCar,實(shí)現(xiàn)了Car接口,然后我定義了一個(gè)Test.java類,我在BaoMaCar和Test上使用了@Component注解,表明我這兩個(gè)類需要?jiǎng)?chuàng)建由Spring管理的bean對(duì)象,有點(diǎn)繞,這么說會(huì)更好理解:使用了@Component之后,Spring會(huì)使用這兩個(gè)類創(chuàng)建出相應(yīng)的bean對(duì)象,并放到容器中。還有一個(gè)MyConfig.java類,上面使用了@Configuration和@ComponentScan注解,這個(gè)類是一個(gè)Spring配置類,如果你沒有看過我的上一篇文章,建議你看一下,上篇文章介紹了使用Java配置Spring的方式。因?yàn)槲乙獑?dòng)Spring上下文就是需要這個(gè)配置類,同時(shí)我也需要讓Spring發(fā)現(xiàn)這些我聲明的Component,所以還需要使用@Component注解(中文意思:組件掃描),參數(shù)是當(dāng)前的包,默認(rèn)就掃描當(dāng)前package下的所有類,看看哪個(gè)類上面使用@Component注解就把哪個(gè)類交由Spring管理。直接看代碼吧!

package demo2;

public interface Car {
    void move();
}
package demo2;
import org.springframework.stereotype.Component;
@Component
public class BaoMaCar implements Car {
    private String driver = "小白開";
    public void move() {
        System.out.println(driver+"正在開車");
    }
}
package demo2;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("demo2")
public class MyConfig {
}
package demo2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class Test {
    @Autowired
    private Car car;

    public Car getCar() {
        return car;
    }

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
        Test test = context.getBean(Test.class);
        test.getCar().move();
        context.close();
    }
}

你可能覺得我說半天跟自動(dòng)配置有什么關(guān)系?看一下最后一個(gè)類——Test.java,里面用到了@Autowired注解,當(dāng)我啟動(dòng)main()方法的時(shí)候,你猜會(huì)發(fā)生什么?控制臺(tái)會(huì)打?。?ldquo;小白正在開車”。是不是覺得好奇怪?這是怎么做到的?聽我為你慢慢道來。我從上下文中拿到了一個(gè)Test類的對(duì)象,我Test類本身就是使用了@Component注解的,所以上下文啟動(dòng)之后容器中就已經(jīng)創(chuàng)建好了Test的對(duì)象。那Test對(duì)象的Car car屬性怎么會(huì)沒有報(bào)空指針錯(cuò)誤呢?沒錯(cuò)了,就是在創(chuàng)建Test的對(duì)象時(shí),Spring發(fā)現(xiàn)這個(gè)類的Car car屬性使用@Autowired注解,于是就在容器中找實(shí)現(xiàn)了Car接口的對(duì)象,一番搜索之后,找到了BaoMaCar的對(duì)象,于是就把這個(gè)對(duì)象注入到Test的對(duì)象的car屬性中了。是不是很厲害?當(dāng)然了,當(dāng)容器中有多個(gè)實(shí)現(xiàn)了Car接口的對(duì)象時(shí),這個(gè)寫法是有問題的,因?yàn)镾pring知道你需要一個(gè)實(shí)現(xiàn)了Car接口的對(duì)象,但是由于有多個(gè)符合這個(gè)條件的對(duì)象,所以無法實(shí)現(xiàn)幫你自動(dòng)注入,因此會(huì)發(fā)生異常。解決的辦法就好幾種。我就不一一列舉了,還是那句話,師傅領(lǐng)進(jìn)門,修行靠個(gè)人,你應(yīng)該自己去探索一下。

到此這篇關(guān)于Spring @Autowired實(shí)現(xiàn)自動(dòng)裝配的文章就介紹到這了,更多相關(guān)Spring @Autowired自動(dòng)裝配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中BeanUtils.copyProperties的用法(超詳細(xì))

    java中BeanUtils.copyProperties的用法(超詳細(xì))

    本文介紹了BeanUtils.copyProperties()方法的使用,包括其功能、用法、注意事項(xiàng)和示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • SpringBoot Admin健康檢查功能的實(shí)現(xiàn)

    SpringBoot Admin健康檢查功能的實(shí)現(xiàn)

    admin主要就是告訴運(yùn)維人員,服務(wù)出現(xiàn)異常,然后進(jìn)行通知(微信、郵件、短信、釘釘?shù)龋┛梢苑浅?焖偻ㄖ竭\(yùn)維人員,相當(dāng)報(bào)警功能,接下來通過本文給大家介紹SpringBoot Admin健康檢查的相關(guān)知識(shí),一起看看吧
    2021-06-06
  • IDEA生成patch和使用patch的方法實(shí)現(xiàn)

    IDEA生成patch和使用patch的方法實(shí)現(xiàn)

    比如你本地修復(fù)的 bug,需要把增量文件發(fā)給客戶,很多場(chǎng)景下大家都需要手工整理修改的文件,并整理好目錄,這個(gè)很麻煩,那有沒有簡單的技巧呢?本文主要介紹了IDEA生成patch和使用patch的方法實(shí)現(xiàn),感興趣的可以了解一下
    2023-08-08
  • Java在長字符串中查找短字符串的實(shí)現(xiàn)多種方法

    Java在長字符串中查找短字符串的實(shí)現(xiàn)多種方法

    這篇文章主要介紹了Java在長字符串中查找短字符串的實(shí)現(xiàn)多種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • java 內(nèi)部類的詳解及實(shí)例

    java 內(nèi)部類的詳解及實(shí)例

    這篇文章主要介紹了 java 內(nèi)部類的詳解及實(shí)例的相關(guān)資料,這里提供了兩種內(nèi)部類的實(shí)現(xiàn)方法,并給出實(shí)例,需要的朋友可以參考下
    2017-08-08
  • 深入理解Spring bean加載順序

    深入理解Spring bean加載順序

    在默認(rèn)配置下,SpringBean的加載順序主要受到Bean定義順序、依賴關(guān)系和生命周期回調(diào)方法的影響,本文就來了解一下Spring bean加載順序,感興趣的同學(xué)可以學(xué)習(xí)
    2024-10-10
  • SpringBoot實(shí)現(xiàn)監(jiān)控Actuator,關(guān)閉redis監(jiān)測(cè)

    SpringBoot實(shí)現(xiàn)監(jiān)控Actuator,關(guān)閉redis監(jiān)測(cè)

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)監(jiān)控Actuator,關(guān)閉redis監(jiān)測(cè),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java9垃圾回收方法finalize() 原理解析

    Java9垃圾回收方法finalize() 原理解析

    這篇文章主要介紹了Java9垃圾回收方法finalize() 原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線美食網(wǎng)站系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線美食網(wǎng)站系統(tǒng)的實(shí)現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線美食網(wǎng)站系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • JavaSE學(xué)習(xí)之內(nèi)部類及常用API

    JavaSE學(xué)習(xí)之內(nèi)部類及常用API

    這篇文章主要介紹了JavaSE中的內(nèi)部類和幾個(gè)常用的API,文中的示例代碼介紹詳細(xì),對(duì)我們學(xué)習(xí)JavaSEI有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12

最新評(píng)論

西藏| 铜鼓县| 江城| 巨野县| 阿勒泰市| 平邑县| 东兴市| 平乐县| 久治县| 肥城市| 饶阳县| 茌平县| 德安县| 山东省| 娱乐| 临沂市| 桃园县| 筠连县| 肥乡县| 鹿邑县| 延津县| 余江县| 应城市| 沐川县| 武宣县| 枞阳县| 高淳县| 宜宾县| 武川县| 汉源县| 枣强县| 上高县| 巴南区| 嘉鱼县| 大厂| 海宁市| 田林县| 滦南县| 武平县| 修文县| 揭西县|