Spring 基本概念
1 spring是開源的輕量級框架
2 spring核心主要兩部分:
(1)aop:面向切面編程,擴展功能不是修改源代碼實現
(2)ioc:控制反轉,把對象的創建交給spring進行管理
- 比如有一個類,在類裏面有方法(不是靜態的方法),調用類裏面的方法,創建類的對象,使用對象調用方法,創建類對象的過程,需要new出來對象
- 把對象的創建不是通過new方式實現,而是交給spring配置創建類對象
3 spring是一站式框架
(1)spring在javaee三層結構中,每一層都提供不同的解決技術
- web層:springMVC
- service層:spring的ioc
- dao層:spring的jdbcTemplate
開發中的一種思想: 高內聚,低耦合
原始的管理bean 的方式,是在對象裏面new 的方式,但是這樣耦合度太高了
解決方法: 工廠模式解決
Spring 解決 — IOC原理
ioc底層原理使用技術
(1)xml配置文件
(2)dom4j解決xml
(3)工廠設計模式
(4)反射
bean 標籤的常用屬性
- id 屬性
bean 的唯一標識,一般是以類名命名,首字母小寫(可以是任意名字,但不能包含特殊符號) - class 屬性
創建對象所在類的全路徑 - name 屬性
和 id 的功能是一樣的(可以包含特殊符號) scope 屬性
- singleton:默認值,單例
- prototype:多例
- request:創建對象把對象放到request域裏面
- session:創建對象把對象放到session域裏面
- globalSession:創建對象把對象放到globalSession裏面
autowire 屬性注入方式
- byName:把與bena 的屬性具有相同名字id的自動裝配到所在bean中
- byType: 把與bean 的屬性具有相同類型的其他bean注入到對應到對應屬性中
- constructor :構造函數注入
- autodetect:最佳裝配方式,先按照constructor注入,如果失敗,按照byType方式注入
ps: 可以在bean裏面爲每一個bean單獨設置,也可以在xml文件的頭部添加整個xml文件中bean 的注入方式。
屬性注入
- 構造函數注入
<!-- 使用有參數構造注入屬性 -->
<!-- <bean id="demo" class="cn.itcast.property.PropertyDemo1"> -->
<!-- 使用有參構造注入 -->
<!-- <constructor-arg name="username" value="小王小馬"></constructor-arg>
</bean> -->
- setter 方法注入
<!-- 使用set方法注入屬性 -->
<!-- <bean id="book" class="cn.itcast.property.Book"> -->
<!-- 注入屬性值
name屬性值:類裏面定義的屬性名稱
value屬性:設置具體的值
-->
<property name="bookname" value="易筋經"></property>
</bean>
注入複雜數據類
數組
List
Map
properties
<!-- 注入複雜類型屬性值 -->
<bean id="person" class="cn.itcast.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: inversion of control 控制反轉,把對象創建交給spring進行配置
(2)DI: dependency injection 依賴注入,向類裏面的屬性中設置值
(3)關係:依賴注入不能單獨存在,需要在ioc基礎之上完成操作
說明: 本文大部分內容都是跟隨者傳播智課的教學視頻學習而來,可以看做是翻譯文章,只是自己吸收之後又書寫一遍,加深自己的知識理解。