spring中IOC容器建立物件,物件依賴關係處理
SpringIOC容器
1) 建立物件
SpringIOC容器,是spring核心內容。
作用: 建立物件 & 處理物件的依賴關係
IOC容器建立物件:
建立物件, 有幾種方式:
1) 呼叫無引數構造器
2) 帶引數構造器
3) 工廠建立物件
工廠類,靜態方法建立物件
工廠類,非靜態方法建立物件
1) 呼叫無引數構造器
先看一下包結構。
建一個User實體類其中定義好無參構造器和有參構造器。
在bean.xml中載入無參構造方法
2) 帶引數構造器
在bean.xml中載入有參構造方法
或者自己將要傳方值另外定義好(不把程式碼寫死)
工廠類,靜態方法建立物件
3) 工廠建立物件
工廠類,非靜態方法建立物件靜態方法建立物件
建立一個測試類來使用一下:
物件依賴關係
Spring中,如何給物件的屬性賦值? 【DI, 依賴注入】
1) 通過建構函式
2) 通過set方法給屬性注入值
3) p名稱空間
4)自動裝配(瞭解)
5) 註解
1) 通過建構函式
2) 通過set方法給屬性注入值
3) p名稱空間
4)自動裝配(瞭解)
通過屬性名稱就行裝配
全域性的自動裝配
通過屬性型別就行裝配
default-autowire="byType"
注意:當同類型物件存在兩個時則會報錯。
總結:
Spring提供的自動裝配主要是為了簡化配置; 但是不利於後期的維護。
(一般不推薦使用)
5) 註解
註解方式可以簡化spring的IOC容器的配置!
使用註解步驟:
1)先引入context名稱空間
xmlns:context="http://www.springframework.org/schema/context"
2)開啟註解掃描
<context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>
3)使用註解
通過註解的方式,把物件加入ioc容器。
建立物件以及處理物件依賴關係,相關的註解:
@Component 指定把一個物件加入IOC容器
@Resource 屬性注入
也可以將括號中的內容省略(就是直接通過型別查詢)
示例:
或者我們可以按層結構進行註解
@Repository 作用同@Component; 在持久層使用
@Service 作用同@Component; 在業務邏輯層使用
@Controller 作用同@Component; 在控制層使用
示例:
註解也可以和bean建立物件一起使用
比如將持久層不加註解,然後在bean.xml中配置物件
<bean id="userDao" class="cn.itcast.property.UserDao" ></bean>
總結:
1) 使用註解,可以簡化配置,且可以把物件加入IOC容器,及處理依賴關係(DI)
2) 註解可以和XML配置一起使用。