Spring IOC實現原理筆記(一)

2021-08-28 02:22:58 字數 3567 閱讀 4880

基本用法

建乙個測試的bean如下:

public

class

mytestbean

public

void

setteststr(string teststr)

public

void

test()

}

beans.xml檔案如下:

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

xmlns=""

xmlns:xsi=""

xsi:schemalocation="

/spring-beans-4.0.xsd">

id="mytestbean"

class="com.season.mytestbean">

name="teststr"

value="hello world"/>

bean>

beans>

**結構如下

測試**如下:執行後會看到輸出」hello world」

@test

public

void

test******load()

beanfactory介面位於類結構樹的頂端,我們經常用到的就是getbean方法,來從spring容器中獲得想要的物件。

beannameaware,initializingbean,beanfactoryaware等

讓mytestbean實現一些介面

public

class

mytestbean

implements

beannameaware,initializingbean,beanfactoryaware

@override

public

void

afterpropertiesset() throws exception

@override

public

void

setbeanfactory(beanfactory beanfactory) throws bean***ception

}

輸出如下:

mytestbean - setbeanname... beanname: mytestbean

mytestbean - setbeanfactory... beanfactory:org.springframework.beans.factory.support.defaultlistablebeanfactory@1213b92: defining beans [mytestbean]; root of factory hierarchy

mytestbean - afterpropertiesset...

hello world

beanfactorypostprocessor用法建乙個類實現beanfactorypostprocessor介面

public

class

mybeanfactorypostprocessor

implements

beanfactorypostprocessor }}

}

在beans.xml中加上改bean

class="com.season.mybeanfactorypostprocessor"/>
執行輸出結果如下:

mybeanfactorypostprocessor - postprocessbeanfactory...

mytestbean - setbeanname... beanname: mytestbean

mytestbean - setbeanfactory... beanfactory:org.springframework.beans.factory.support.defaultlistablebeanfactory@127bd23: defining beans [mytestbean,com.season.mybeanfactorypostprocessor#0]; root of factory hierarchy

mytestbean - afterpropertiesset...

mybeanfactorypostprocessor改變了屬性

beanpostprocessor用法建乙個類實現beanpostprocessor介面

public

class

mybeanpostprocessor

implements

beanpostprocessor

@override

public object postprocessafterinitialization(object o, string s) throws bean***ception

}

在beans.xml中加上改bean

class="com.season.mybeanpostprocessor"/>
輸出結果如下:

mybeanfactorypostprocessor - postprocessbeanfactory...

mytestbean - setbeanname... beanname: mytestbean

mytestbean - setbeanfactory... beanfactory:org.springframework.beans.factory.support.defaultlistablebeanfactory@127bd23: defining beans [mytestbean,com.season.mybeanpostprocessor#0,com.season.mybeanfactorypostprocessor#0]; root of factory hierarchy

mybeanpostprocessor - postprocessbeforeinitialization...bean: com.season.mytestbean@153b3e6 beanname: mytestbean

mytestbean - afterpropertiesset...

mybeanpostprocessor - postprocessafterinitialization...

mybeanfactorypostprocessor改變了屬性

下篇文章開始分析原始碼,對上面的輸出結果進行**。

Spring IOC實現原理

ioc 控制反轉,通俗來說就是把物件的建立不是通過new的方式實現,而是交給spring配置檔案來建立類的物件。開發思想 高內聚,低耦合 ioc實現原理 需求 實現在userservlet中來得到userservice類的物件 第一步 建立xml配置檔案,配置要建立的物件類userservice 第...

SpringIOC實現原理

假設我們設計一輛汽車 先設計輪子,然後根據輪子大小設計底盤,接著根據底盤設計車身,最後根據車身設計好整個汽車。這裡就出現了乙個 依賴 關係 汽車依賴車身,車身依賴底盤,底盤依賴輪子。這樣的設計看起來沒問題,但是可維護性卻很低。假設設計完工之後,上司卻突然說根據市場需求的變動,要我們把車子的輪子設計都...

面試 spring ioc實現原理

首先載入乙個spring的容器beanfactory,beanfactory的構造方法會建立乙個實現了resource介面例項物件。resource物件通過setconfiguration 方法設定spring配置檔案位置。resource物件有三種實現 分別是fileresource,url re...