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

Spring?DI依賴注入過程解析

 更新時間:2022年11月07日 10:10:48   作者:世界盡頭與你  
依賴注入是由“依賴”和“注入”兩個詞匯組合而成,那么我們再一次順藤摸瓜,分別分析這兩個詞語,這篇文章主要介紹了Spring?DI依賴注入詳解,需要的朋友可以參考下

依賴簡介

一個典型的企業(yè)應用程序不是由一個單一的對象組成(或Spring的說法中的bean)。即使是最簡單的應用程序也只有幾個對象一起工作來呈現(xiàn)最終用戶看作是一個連貫的應用程序。如何從定義許多獨立的bean定義到完全實現(xiàn)的應用程序,在這些應用程序中對象協(xié)作實現(xiàn)目標。

依賴注入

依賴注入(DI)是一個過程,通過這個過程,對象可以通過構造函數(shù)參數(shù),工廠方法的參數(shù)或者在構造或返回對象實例后設置的屬性來定義它們的依賴關系從工廠方法。然后容器在創(chuàng)建bean時注入這些依賴關系。這個過程從根本上說是相反的,因此名為控制反轉(IoC),它本身通過使用類的直接構造或服務定位符模式來控制它自己的依賴關系的實例化或位置。
代碼與DI原則相比更加清晰,當對象提供依賴時,解耦更為有效。該對象不查找它的依賴關系,不知道依賴關系的位置或類。因此,您的類變得更容易測試,特別是當依賴關系在接口或抽象基類上時,它們允許在單元測試中使用存根或模擬實現(xiàn)。

DI存在兩種主要的變體,基于構造函數(shù)的依賴注入和基于Setter的依賴注入

Spring DI依賴注入詳解

pojo類:

public class Student {
    private String name;
    private Hello hello;
    private String[] books;
    private List<String> hobbys;
    private Map<String, String> games;
    private String wife;
    private Properties info;
    
	public Student() {
	}

    public Student(String name, String wife) {
        this.name = name;
        this.wife = wife;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Hello getHello() {
        return hello;
    }

    public void setHello(Hello hello) {
        this.hello = hello;
    }

    public String[] getBooks() {
        return books;
    }

    public void setBooks(String[] books) {
        this.books = books;
    }

    public List<String> getHobbys() {
        return hobbys;
    }

    public void setHobbys(List<String> hobbys) {
        this.hobbys = hobbys;
    }

    public Map<String, String> getGames() {
        return games;
    }

    public void setGames(Map<String, String> games) {
        this.games = games;
    }

    public String getWife() {
        return wife;
    }

    public void setWife(String wife) {
        this.wife = wife;
    }

    public Properties getInfo() {
        return info;
    }

    public void setInfo(Properties info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", hello=" + hello +
                ", books=" + Arrays.toString(books) +
                ", hobbys=" + hobbys +
                ", games=" + games +
                ", wife='" + wife + '\'' +
                ", info=" + info +
                '}';
    }
}

注入普通的String屬性:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="name" value="dahe"/>
</bean>

bean注入,適用于其他的實體類:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="hello" ref="hello"/>
</bean>

數(shù)組注入:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="books">
        <array>
            <value>C語言入門到精通</value>
            <value>Spring底層原理</value>
        </array>
    </property>
</bean>

List注入:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="hobbys">
        <list>
            <value>編程</value>
            <value>美女</value>
        </list>
    </property>
</bean>

Map注入:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="games">
        <map>
            <entry key="王者榮耀" value="30級"/>
            <entry key="我的世界" value="100級"/>
        </map>
    </property>
</bean>

空值注入:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="wife">
        <null/>
    </property>
</bean>

Properties注入:

<bean id="student" class="top.imustctf.pojo.Student">
    <property name="info">
        <props>
            <prop key="學號">202099166</prop>
            <prop key="專業(yè)">軟件工程</prop>
        </props>
    </property>
</bean>

p命名空間注入:

要使用p命名空間,你需要在beans配置頭加入如下語句:

xmlns:p="http://www.springframework.org/schema/p"

例如:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

隨后,就可以使用p方式進行注入:

<bean id="student" class="top.imustctf.pojo.Student" p:name="dahe"
          p:wife="xiaoqian"/>

c命名空間注入:

要使用c命名空間,你需要在beans配置頭加入如下語句:

xmlns:c="http://www.springframework.org/schema/c"

隨后,就可以使用c方式進行注入:(c命名空間是通過構造器進行注入,這就需要pojo類必須存在一個有參的構造方法)

<bean id="student" class="top.imustctf.pojo.Student" c:name="dahe"
          c:wife="xiaoqian"/>

到此這篇關于Spring DI依賴注入詳解的文章就介紹到這了,更多相關Spring DI依賴注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java實現(xiàn)百度云文字識別接口代碼

    java實現(xiàn)百度云文字識別接口代碼

    這篇文章主要為大家詳細介紹了java實現(xiàn)百度云文字識別的接口代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Java 中 synchronized的用法詳解(四種用法)

    Java 中 synchronized的用法詳解(四種用法)

    Java語言的關鍵字,當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼。本文給大家介紹java中 synchronized的用法,對本文感興趣的朋友一起看看吧
    2015-11-11
  • Java中的事件處理機制詳細解讀

    Java中的事件處理機制詳細解讀

    這篇文章主要介紹了Java中的事件處理機制詳細解讀,ava事件處理是采取"委派事件模型",當事件發(fā)生時,產(chǎn)生事件的對象會把此"信息"傳遞給"事件的監(jiān)聽者"處理,需要的朋友可以參考下
    2024-01-01
  • java 對稱加密算法實現(xiàn)詳解

    java 對稱加密算法實現(xiàn)詳解

    這篇文章主要介紹了java 對稱加密算法實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Mybatis聯(lián)合查詢的實現(xiàn)方法

    Mybatis聯(lián)合查詢的實現(xiàn)方法

    本文主要介紹了 Mybatis聯(lián)合查詢的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Springboot項目使用Slf4j將日志保存到本地目錄的實現(xiàn)代碼

    Springboot項目使用Slf4j將日志保存到本地目錄的實現(xiàn)代碼

    這篇文章主要介紹了Springboot項目使用Slf4j將日志保存到本地目錄的實現(xiàn)方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Springboot集成百度地圖實現(xiàn)定位打卡的示例代碼

    Springboot集成百度地圖實現(xiàn)定位打卡的示例代碼

    本文主要介紹了Springboot集成百度地圖實現(xiàn)定位打卡的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • Java并發(fā)程序入門介紹

    Java并發(fā)程序入門介紹

    這篇文章主要介紹了Java并發(fā)程序入門 ,需要的朋友可以參考下
    2015-03-03
  • Java集合之Disruptor操作示例

    Java集合之Disruptor操作示例

    這篇文章主要為大家介紹了Java集合之Disruptor操作示例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • springboot集成activemq的實例代碼

    springboot集成activemq的實例代碼

    本篇文章主要介紹了springboot集成activemq的實例代碼,詳細的介紹了ActiveMQ和Spring-Boot 集成 ActiveMQ,有興趣的可以了解下。
    2017-05-05

最新評論

桂阳县| 竹山县| 汝南县| 延吉市| 河西区| 公主岭市| 巴东县| 关岭| 阿拉善右旗| 江陵县| 石阡县| 梅河口市| 海兴县| 房山区| 班玛县| 永福县| 儋州市| 百色市| 平武县| 洮南市| 墨竹工卡县| 青冈县| 西和县| 舟曲县| 武夷山市| 星座| 周口市| 新乡市| 南京市| 自治县| 日照市| 邵武市| 汉源县| 麟游县| 修武县| 安岳县| 黄骅市| 宁德市| 南召县| 万源市| 绍兴市|