控制反轉,把對象創建和對象之間的調用過程,交給 Spring 進行管理
使用 IOC 目的:爲了耦合度降低
IOC的底層原理:xml解析,工廠模式,反射
IOC 思想基於 IOC 容器完成,IOC 容器底層就是對象工廠
Spring提供IOC容器實現兩種方式:(兩個接口)
-
BeanFactory:IOC容器基本實現,是Spring內部的使用接口,不提供開發人員使用
*加載配置文件的時候不會創建對象,獲取(使用)對象的時候纔會創建對象@Test public void test(){ //加載spring配置文件 BeanFactory applicationContext = new ClassPathXmlApplicationContext("bean1.xml"); //獲取配置文件創建的對象 User user = applicationContext.getBean("user", User.class); System.out.println(user); user.add(); }
-
ApplicationContext:BeanFactory的子接口,提供了更多更強大的功能,一般由開發人員進行使用
*加載配置文件的時候就會創建配置文件的對象。@Test public void test(){ //加載spring配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml"); //獲取配置文件創建的對象 User user = applicationContext.getBean("user", User.class); System.out.println(user); user.add(); }
ApplicationContext接口的實現類:
ClassPathXmlApplicationContext和FileSystemXmlApplicationContext區別:
-
ClassPathXmlApplicationContext
默認文件路徑是src下那一級 -
FileSystemXmlApplicationContext
這個類,默認獲取的是項目路徑,默認文件路徑是項目名下一級,與src同級。
如果前邊加了file:則說明後邊的路徑就要寫全路徑了,就是絕對路徑
file:D:/workspace/applicationContext.xml