Spring 基本概念和 IOC

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)反射

IOC原理

bean 標籤的常用屬性

  1. id 屬性
    bean 的唯一標識,一般是以類名命名,首字母小寫(可以是任意名字,但不能包含特殊符號)
  2. class 屬性
    創建對象所在類的全路徑
  3. name 屬性
    和 id 的功能是一樣的(可以包含特殊符號)
  4. scope 屬性

    • singleton:默認值,單例
    • prototype:多例
    • request:創建對象把對象放到request域裏面
    • session:創建對象把對象放到session域裏面
    • globalSession:創建對象把對象放到globalSession裏面
  5. autowire 屬性注入方式

    • byName:把與bena 的屬性具有相同名字id的自動裝配到所在bean中
    • byType: 把與bean 的屬性具有相同類型的其他bean注入到對應到對應屬性中
    • constructor :構造函數注入
    • autodetect:最佳裝配方式,先按照constructor注入,如果失敗,按照byType方式注入
      ps: 可以在bean裏面爲每一個bean單獨設置,也可以在xml文件的頭部添加整個xml文件中bean 的注入方式

屬性注入

  1. 構造函數注入
<!-- 使用有參數構造注入屬性 -->
<!-- <bean id="demo" class="cn.itcast.property.PropertyDemo1"> -->
  <!-- 使用有參構造注入 -->
  <!-- <constructor-arg name="username" value="小王小馬"></constructor-arg>
</bean> -->
  1. 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基礎之上完成操作


說明: 本文大部分內容都是跟隨者傳播智課的教學視頻學習而來,可以看做是翻譯文章,只是自己吸收之後又書寫一遍,加深自己的知識理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章