Spring 學習1
Srping概念
1.Spring是開源的輕量級框架
2.Srping核心兩部分:
(1)aop:面向切面編程,擴展功能不是修改源代碼實現
(2)ioc:控制反轉
-比如有一個類,在類裏面有方法(不是靜態方法),調用類裏面的方法,創建類的對象調用方法,創建類對象的過程,需要new出來對象
-把對象的創建不是通過new方式實現,而是交給spring配置創建類對象
3.Srping是一站式框架
(1)spring在javaee三層結構中,每一層都提供不同的解決技術
-web層:springMVC
-service層:spring的ioc
-dao層:spring的jdbcTemplate
4.Srping版本
(1)hibernate5.x
(2)spring4.x
Spring的ioc操作
1.把對象的創建交給spring進行管理
2.ioc操作兩部分:
(1)ioc的配置文件方式
(2)ioc的註解方式
ioc底層原理
1. ioc底層原理使用技術
(1)xml配置文件
(2)dom4j解決xml
(3)工廠設計模式
(4)反射
2. 畫圖分析ioc實現原理
IOC入門案例
第一步 導入jar包
(1)解壓資料zip文件
Jar特點:都有三個jar包
(2)做Spring最基本功能時候,導入四個核心的jar包就可以了
(3)導入支持日誌輸出的jar包
第二步 創建類,在類裏面創建方法
第三步 創建spring配置文件,配置創建類
(1)spring核心配置文件名稱和位置不是固定的
-建議放到src下面,官方建議applicationContext.xml
(2)引入schema約束,
(3)配置對象創建
第四步 寫代碼測試對象創建
(1)這段代碼在測試中使用
Spring的bean管理(xml方式)
Bean實例化的方式
1. 在spring裏面通過配置文件創建對象
2. bean實例化三種方式實現
第一種 使用類的無參數構造創建(重點)
類裏面沒有無參數的構造,出現異常
第二種 使用靜態工廠創建
(1)創建靜態的方法,返回類對象
第三種 使用實例工廠創建
(1)創建不是靜態的方法,返回類對象
Bean標簽常用屬性
(1)id屬性:起名稱,id屬性值名稱可任意命名
-id屬性值,不能包含特殊符號
-根據id值得到配置對象
(2)class屬性:創建對象所在類的全路徑
(3)name屬性:功能和id屬性一樣,id屬性值不能包含特殊符號,但是在name屬性值裏面可以包含特殊符號
(4)scope屬性:
-singleton:默認值,單例
-prototype:多例
-requset:創建對象把對象放到request域裏面
-session:創建對象把對象放到session域裏面
-glbalSession:創建對象把對象放到globalSession裏面
屬性註入介紹
1 創建對象時候,向類裏面的屬性裏面設置值
2 屬性註入的方式(三種)
(1)使用set方法註入
(2)使用有參數構造註入
(3)使用接口註入
3 在spring框架裏面,只支持前兩種方式
(1)set方法註入
(2)有參數構造註入
使用有參數構造註入屬性
使用set方法註入屬性(重點)
註入對象類型屬性(重點)
1 創建service類和dao類
(1)在service得到dao對象
2 具體實現過程
(1)在service裏面把dao作為類型屬性
(2)生成dao類型屬性的set方法
(3)配置文件中註入關系
P名稱空間註入
註入復雜類型屬性
1 數組
2 list集合
3 map集合
4 properties類型
<!--註入復雜類型屬性值-->
<bean id="person" class="com.intergraph.property.Person">
<!--數組-->
<property name="arrs">
<list>
<value>小王</value>
<value>小馬</value>
<value>小宋</value>
</list>
</property>
<!--list-->
<property name="list">
<list>
<value>小奧</value>
<value>小金</value>
<value>小明</value>
</list>
</property>
<!--map-->
<property name="map">
<map>
<entry key="aa" value="lucy"></entry>
<entry key="bb" value="mary"></entry>
<entry key="cc" value="tom"></entry>
</map>
</property>
<!--properties-->
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
IOC和DI區別
(1)IOC:控制反轉,把對象創建交給spring進行配置
(2)DI:依賴註入,不能單獨存在,需要在IOC基礎上之上完成操作
Spring整合web項目原理
1 加載spring核心配置文件
(1)new對象,功能可以實現,效率很低
2 實現思想:把加載配置文件和創建對象過程,在服務器啟動時候完成
3 實現原理
(1)ServletContext對象
(2)監聽器
(3)具體使用:
- 在服務器啟動時候,為每個項目創建ServletContext對象
- 在ServletContext對象創建時候,使用監聽器可以具體到ServletContext對象在什麽時候創建
- 使用監聽器聽到ServletContext對象創建時候
- 加載spring配置文件,把配置文件配置對象創建
- 把創建出來的對象放到ServletContext域對象裏面(setAttribute方法)
- 獲取對象時候,到ServletContext域得到(getAttribute方法)
Spring 學習1