一.Spring是什麼?
(1)Spring是一個IoC容器,利用DI技術管理對象之間的依賴!
IoC: Inversion of Control(控制反轉)
DI: Dependency Injection(依賴注入)
Spring也是一個對象工廠,它負責生產(即創建)和管理(比如控制它們的生命週期,或給特定的對象創建代理等等)着各種對象
Spring也是一個對象工廠,它負責生產(即創建)和管理(比如控制它們的生命週期,或給特定的對象創建代理等等)着各種對象
控制反轉(IoC)
所謂控制:即獲取依賴對象的方式
假如A要調用B的方法(即A依賴於B),則A首先要獲得B對象
B b = new BImplement();
A直接依賴於B的具體實現
B b = Factory.getBInstance();
A依賴於工廠對象
上面就是沒有“反過來”的情況:A主動獲取B對象
反轉
即如果A要獲取B對象,不是由A主動獲取B對象,而是由其它人把B送給A(即將B注入給A),因爲A依賴於B,所以B是A的依賴對象,因此稱“依賴注入(DI)”
☞DI與scope
把多例對象注入到多利對象中(沒有問題)
把多例對象注入到單利對象中(有問題)
把單利對象注入到多例對象中(沒有問題)
把單例對象注入到單利對象中(沒有問題)
(2)類型轉換器的配置
<!--註冊類型轉換器 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<!-- key對應的就是類型,value對應的就是轉換器 -->
<entrykey="java.util.Date"value="cn.com.leadfar.spring.actions.DateConver"></entry>
</map>
</property>
</bean>
(3)注入的幾種方式
使用構造器注入
使用屬性setter方法注入
使用Field注入(用於註解方式)
注入依賴對象可以採用手工裝配或自動裝配,在實際應用中建議使用手工裝配,因爲自動裝配會產生未知情況,開發人員無法預見最終的裝配結果。
1.手工裝配依賴對象
2.自動裝配依賴對象
二.註解(annotation)和XML通用
✈利用註解進行注入
---Component,默認定義的bean的ID是類名(第一個字母小寫)
----Controller 定義Action
---Service 定義業務邏輯對象
---Repository 定義持久化層對象
--Scope(“prototype” )定義Scope屬性
---Resource註解缺省是按類型注入,除非指定name屬性
典型的應用 Action---service---dao(三層架構中的註解)
異常:
(1)懶加載異常 由於hibernate處於離線狀態,將session關閉,導致jsp頁面不能訪問數據庫中的內容。如何解決:爲了解決。Ssh集成的時候通常在web.xml中定義OpensessionInViewFilter.該Filter通常定義在最前面