Spring IOC原理理解

2021-08-13 21:20:08 字數 1873 閱讀 1451

ioc,inversion of control,控制倒轉。這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。

di,dependency injection,依賴注入。在系統執行中,動態的向某個物件提供它所需要的其他物件。

控制的什麼被反轉了?就是:獲得依賴物件的方式反轉了。

如何找女朋友的?

在乙個物件中,如果要使用另外的物件,就必須得到它(自己new乙個,或者從jndi中查詢乙個),使用完之後還要將物件銷毀(比如connection等),物件始終會和其他的介面或類藕合起來。

那麼ioc是如何做的呢?

有點類似婚介所,乙個婚介所有很多男男**的個人資訊,我可以向婚介所提出要求,比如長得像高圓圓,身材像林熙蕾等等,然後婚介所就會按照我們的要求,提供符合要求的乙個mm資訊,我們只需要去和mm談朋友就好了。如果婚介所給我們的人選不符合要求,我們就提出不交往。整個過程不再由我自己來控制,而是由婚介所類控制中間環節。spring開發也是如此,所有的類都會在spring容器中登記,告訴spring你是什麼,你需要什麼,然後spring會在系統執行到適當的時候,把你需要的東西主動給你,同時也把你交給其他需要的你的類。所有類的建立、銷毀都由spring來控制,也就是說控制物件生存週期不再是引用它的物件,而是spring。對於某個物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以就叫控制反轉。

首先建立動物介面animal

package com.feiniu.springframework.test;

public

inte***ce animal

接著建立動物實現類cat

package com.feiniu.springframework.test;

public

class

catimplements

animal

public string getname()

public

void

setname(string name)

}

<?xml version="1.0" encoding="utf-8"?>

xmlns=""

xmlns:xsi=""

xmlns:aop=""

xmlns:task=""

xmlns:context=""

xmlns:tx=""

xsi:schemalocation=" /spring-beans.xsd

/spring-aop.xsd

/spring-context.xsd

/spring-tx.xsd

/spring-task-3.1.xsd"

default-autowire="byname">

id="animal"

class="com.feiniu.springframework.test.cat">

name="name"

value="kitty" />

bean>

beans>

最後建立測試類testanimal

package com.feiniu.springframework.test;

public

class

testanimal

}

執行main方法控制台結果

i am kitty!

CSS 原理理解

網頁製作最初,html規定了 normal document stream 標準文件流 來規範元素在網頁中的顯示法則 標準文件流中元素分兩種 塊內元素,行內元素。行內元素的特點 span標籤 豎直margin中的塌陷現象,上下緊密排列的元素的外邊距並不是兩個元素外邊距之和,而是選取那個最大的外邊距作...

ROI Align 原理理解

對背景問題的理解 之前一直在想乙個問題 乙個label在原圖上標記出乙個包含目標的區域。這個框在特徵提取後,大小被縮小到了什麼程度?如果這個label框本身就不大,那麼經過幾層池化之後,是不是在最後的feature map上都沒有乙個位置,能夠對應到這個區域?目標在特徵提取過程中,由於這種深度結構導...

補碼原理理解

今天上課靈機一動想到了補碼的原理 補碼是由原碼變換而來,原碼就是帶符號的二進位制數。正數的補碼與原碼一樣,負數的補碼是由原碼取反 除了符號位 後加一得到的。舉個例子 正數 1 的原碼為 0000 0001 對應的補碼為 0000 0001 負數 1 的原碼為 1000 0001 對應的補碼為 111...