天天看點

IOC容器底層原理一、IOC底層實作原理二、IOC(BeanFactory 接口)

一、IOC底層實作原理

架構 = 解析 + 反射 + 工廠

XML解析

XML配置檔案,配置建立的對象

工廠模式

原始的方式是在

UserService

new

一個

UserDAO

的對象,然後調用對象中的方法,這樣使得兩個類的耦合度很高。

IOC容器底層原理一、IOC底層實作原理二、IOC(BeanFactory 接口)

而工廠模式将

new

一個

UserDao

通過

UserFactory

工廠類來實作,降低了

UserService

UserDao

之間的耦合度,但還是存在耦合的問題,是以需要進一步降低耦合度。

IOC容器底層原理一、IOC底層實作原理二、IOC(BeanFactory 接口)

反射

通過XML解析,然後利用反射建立檔案

IOC整個過程

第一步:xml配置檔案,配置建立的對象

<!--配置User對象建立-->
    <bean id="Dao" class="spring5.UserDao"></bean>
           

第二步:建立工廠類,通過解析xml配置檔案和反射實作。

Service

類通過工廠類調用

Dao

public class UserFactory {
    
    public static UserDao getDao(){
        
        String classValue = class屬性值;   //xml解析
        Class clazz = Class.forName(classValue);//通過反射建立對象
        return (UserDao) clazz.newInstance();
    }
}
           

二、IOC(

BeanFactory

接口)

IOC思想基于IOC容器完成,IOC容器底層就是對象工廠。

Spring提供IOC容器實作兩種方式:

  • BeanFactory

    接口:IOC容器基本實作,是Spring内部的使用接口,不提供開發人員進行使用。加載配置檔案時候不會建立對象,在擷取對象(使用)才去建立對象。
  • ApplicationContext

    接口:是

    BeanFactory

    接口的子接口,提供更多更強大的功能,一般由開發人員進行使用。加載配置檔案時候就會把在配置檔案對象進行建立。

ApplicationContext

接口有兩個實作類

ApplicationContext context = new ClassPathXmlApplicationContext("userBean.xml");
ApplicationContext context1 = new FileSystemXmlApplicationContext("D:\\Java\\workspace_idea\\Spring5_demo1\\src\\userBean.xml");
           

繼續閱讀