利用反射實現Spring的IOC容器

2021-09-26 15:56:50 字數 1614 閱讀 5197

概念步驟

spring的核心模組就是ioc機制,ioc是inversion of control簡稱。

inversion 反轉

物件的獲得,原來由程式開發人員自己構造,變成了由spring指定,由主動獲取變成了被動的接收。

control 控制

控制的是物件的建立,原來由程式開發人員來建立乙個物件,現在由spring容器來建立物件

與mvc三層架構的區別

在mvc架構中,service呼叫dao層時就需要傳入乙個dao層的具體的實現類即可。

雖然dao仍然需要建立,但是在結構上卻發生了根本的變化,即:物件由原來程式本身建立,變為了程式被動的接收物件。程式設計師的主要精力放在業務層的實現上。實現了service層和dao層的解耦工作,service層和dao層實現了分離,沒有了直接的依賴關係。如果dao層發生了業務的改變,原有的程式不需要發生任何改變,只需要將不同的dao實現類傳給service即可。

spring框架則實現了完全的解耦,在service物件建立時將會建立乙個dao的物件傳入到service中,spring將這種實現通過以下配置來完成。

package com.langsin.pojo;

public class book

public book()

public string getbookid()

public void setbookid(string bookid)

public string getbookname()

public void setbookname(string bookname)

public book(string bookid, string bookname, double price)

public double getprice()

public void setprice(double price)

@override

public string tostring()

}

<---! 引入了c命名空間->

org.jdom

jdom

1.1

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

public void testreflect() throws exception);

method.invoke(obj, new object );

}} system.out.println("ioc容器啟動");

book book = (book) container.get("book");

system.out.println(book.getbookname());

user user = (user) container.get("user");

system.out.println(user.getusername());

}

spring利用反射無法注入物件

autowired 類全名 classname classname class aclass class.forname classname 實體名 class paramclass class.forname paramtype 此處必須使用sping管理的上下文獲取bean,利用newinsta...

利用反射實現EXCEL匯入

業務需求是這樣的 1.客戶需要匯入excel檔案 2.excel檔案中有4個sheet 3.每個sheet名與其sheet內的欄位名是固定的 想實現,將4個sheet匯入資料庫中 我的實現是 1.定義介面 public inte ce iresource 2.定義sheet物件 public cla...

利用反射機制實現工廠模式

細節 命名規則類,介面名稱都得大寫 寫完 記得格式化,就算是測試 貼出來也是給人看的。不能太水。inte ce fruit public void eat class orange implements fruit class factory catch exception e return f c...