手寫IOC容器

2021-08-31 07:01:20 字數 1264 閱讀 8522

ioc原理簡述:所謂ioc,對於spring框架來說,就是由spring負責控制物件的生命週期和物件間的關係。

說白了也就是我們在建立物件時,由原先的程式設計師建立物件反轉為由容器控制這些操作,在bean工廠中建立物件,程式設計師只需要在使用某個物件時直接從容器中獲取。 

1、配置需要容器進行管理的bean檔案。

bean檔案中配置id和class。容器中根據配置中的id獲取到類的全限定名(com.xoyar.dao.impl.userdaoimpl),利用反射機制建立物件。

反射:class.forname("全限定名").newinstance()

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

2、這裡到了ioc的核心部分。我們首先建立beanfactory介面,這裡包含乙個getbean的方法,用來獲取bean。

3.1、建立容器,這裡用到map。

3.2.1、構造方法中的具體實現見**注釋。

ps:此處解析xml用到了jdom-1.0.jar。

/**

* bean工廠的實現類,在此類中利用反射建立所有需要的物件並存放在容器中。

* 不需要手動建立物件

* 需要物件時可在bean工廠直接獲取getbean()

*/ /**

* 建立容器

*/mapbeans = new hashmap<>();

/*** 通過反射機制根據類的全限定名,建立類物件

* 在載入容器時就初始化xml檔案中配置的所有物件

*///使用jdom包中的saxbuilder解析xml檔案

saxbuilder saxbuilder = new saxbuilder();

//將beans.xml載入到document中

document document = saxbuilder.build(this.getclass().getclassloader().getresourceasstream("beans.xml"));

//先獲取根元素,再用根元素獲取子元素element rootelement = document.getrootelement();

list list = rootelement.getchildren("bean");

//獲取每個元素的id和class

for (int i=0;i

IOC容器簡介

了解到spring框架的兩大核心模組 ioc容器和aop 原始碼分析首先從ioc容器開始,之後再來看aop 這一篇我們先來了解一下什麼是ioc容器,以及ioc容器的功能 1 正常開發模式 非依賴反轉 正常的,合作物件的引用或依賴關係的管理由具體物件來完成 持有被引用的物件 這導致了 高度耦合並且降低...

手寫spring IOC容器

基本思路 解析xml配置檔案 根據配置的生成相應的物件 將物件存入ioc容器 ioc容器實現 1.0 encoding utf 8 address class com.example.xmlsax reader.entity.address city value fuzhou user class ...

Ioc容器Autofac介紹

先看乙個例子 首先新建乙個工程,新增autofac引用。準備 和之前的一樣 inte ce idal class sqlserverdal idal class oracledal idal 接下來就是ioc的實現了 class datafactory 接下來就是獲取物件的例項並呼叫 static ...