IOC:inversion of Control 控制反轉,Spring框架的核心。削減計算機程序的耦合問題,把對象(例如JDBC)的創建權交給Spring。
IOC的兩種類型:
- 依賴注入:
- 依賴查找:
Spring安裝包下載地址:http://repo.spring.io/libs-release-local/org/springframework/spring/
解壓Spring安裝包:
- docs:Spring的開發規范、API
- libs:Spring的開發jar包、源碼
- schema:Spring的配置文件的約束
創建web項目,引入IOC所需jar包
編寫類和接口
問題:能不能在不修改源代碼的前提下,將DAO的實現由JDBC切換到HIbernate?
Spring的IOC底層實現:
原來的方法:用工廠模式取代面向接口,降低了接口與實現類之間的耦合。原來改很多類,現在改一個工廠類,但是依然和工廠之間有耦合。
解決方案:工廠+反射 + 配置文件實現解耦合,通過解析xml與反射,生成實例。改動只需要修改配置文件即可。
Spring的方式:
將接口和實現類交給Spring管理:
創建配置文件:applicationContext.xml
約束所在文件位置:Spring/spring-framework-4.2.4.RELEASE/docs/spring-framework-reference/html/xsd-configuration.html
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation=" 5 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 <!-- Spring的入門配置 --> 7 <bean id="UserDao" class="com.itheima.spring.demo1.UserDaoImpl"></bean> 8 9 </beans>
編寫測試類:
如果要更改底層實現,只需改配置文件:
<bean id="UserDao" class="com.itheima.spring.demo1.UserDaoImpl"></bean>
-->
<bean id="UserDao" class="com.itheima.spring.demo1.UserDaoHibernateImpl"></bean>
結果: