1. spring核心構成+IOC

1.Spring 的核心構成
  IOC    Spring 最核心的模塊
  DAO    Spring  對訪問數據庫的支持  主要封裝的是JDBC
  MVC    Spring  對 MVC 設計模式的支持   (SSM)
  AOP    (Aspect Orientied Programing)面向切面編程
  ORM    對象關係映射   Spring 要和ORM框架結合 Mybatis  
2.什麼是IOC
  Inversion  Of  Control  控制反轉
     程序的開發 由原來的 需要某個對象時  由原來的new的方式去  變成了由 容器來提供對象
  就是把對象的控制權交給容器。 容器來負責對象的創建 和 注入。這樣做可以降低對象之間的
  耦合度。  
  IOC的底層由Spring 容器來完成,容器的作用是 負責組件對象的創建  和 對象關係維護。
3.Spring 容器
  Spring 容器 是用來管理 java bean 組件
  Spring 容器 實現了 IOC 和 AOP
  Spring 容器 對應的類型 ApplicationContext  和  BeanFactory
4.Spring 容器使用的步驟
  4.1 建立一個項目    導入spring 的 ioc 相關 jar包 到項目
  4.2 拷貝Spring  容器對應的配置文件  到 src下
  4.3 在Spring 配置文件中 配置 java 類

      <bean  id="bean組件標識"   class="包名+類名"  />

  4.4 構建Spring 容器對象  加載上面的配置文件
               通過Spring容器獲取對象
               
5.使用上面的spring 容器的使用步驟   獲取一個Emp 類型的對象
  這個Emp 類型 需要自定義  字段有 name  age  salary  
 方法有 show  toString  構造 。
 通過容器 來獲取Emp  類型的對象
   4.1 考慮 導入spring ioc 相關jar包   和  spring 的配置文件
   4.2 寫一個Emp 類 提供成員變量   get set方法  構造   toString  show
   4.3 在Spring 配置文件  配置 Emp 類型
       <bean  id="bean組件標識"   class="包名+類名"  />
   4.4  構建Spring 容器對象  加載上面的配置文件   通過Spring容器獲取對象   
   ApplicationContext  app  = new  ClassPathXmlApplicationContext("文件");
   app.getBean("配置文件中的標識",類型.class);    
6.Spring 容器創建bean對象的三種方式
  6.1 使用構造方法來創建對象    默認調用無參構造
     <bean  id=""  class="構建的對象對應的包名+類名"  > </bean>
  6.2 使用靜態工廠方法
     <bean  id="對象標識"  class="工廠的包名+類名"   factory-method="靜態方法名"> </bean>
  6.3 使用實例化工廠方法
     <bean  id="對象標識"  class="目標對象的包名+類名"  factory-bean="工廠對象的標識"
           factory-method="實例化方法名"> </bean>

     (使用日曆對象 來獲取日期對象 )

  <!-- 使用靜態工廠方式 獲取日曆對象  -->
         <bean  id="cal" class="java.util.Calendar" factory-method="getInstance"></bean>
         <!-- 使用實例化工廠方式 使用 日曆對象獲取日期對象  -->
         <bean  id="date" class="java.util.Date"  factory-bean="cal"  factory-method="getTime"></bean>

7.Spring 容器中 bean 對象的作用域
  作用域的指定 使用 bean 標籤中的  scope 來指定
  scope="singleton"   這是spring 容器 默認對一個組件進行的處理
  scope="prototype"   非單例的
  request  session  等這些作用域 在web中使用  
8.對象的初始化問題 (6)
  Spring 容器創建完對象之後 可以對對象進行初始化
  第一種手段 是 在beans 標籤中  加 default-init-method 指定初始化方法的名字  這樣
  針對所有的bean 對象 都起作用,影響的範圍比較大 所有某個類型中沒有對應的初始化方法
  時程序不會報錯。
 第二種手段 在bean 標籤中 加 init-method 指定的方法名  只針對加了init-method 的
 bean  影響範圍比較小  所以沒有對應的初始化的方法則會報錯。
9.對象的銷燬問題   (6)
第一種手段 是 在beans 標籤中  加 default-destroy-method 指定銷燬方法的名字  這樣
  針對所有的bean 對象 都起作用,影響的範圍比較大 所有某個類型中沒有對應的初始化方法
  時程序不會報錯。
 第二種手段 在bean 標籤中 加 destroy-method 指定的方法名  只針對加了destroy-method 的
 bean  影響範圍比較小  所以沒有對應的銷燬的方法則會報錯。
 多例模式下 銷燬方法的輸出不再表現
10.bean 對象的延遲實例化
   bean對象 默認是單例的 在這種作用域下  在Spring 容器啓動時就會創建對象,可以通過設置
   對對象進行延遲實例化。可以在 beans 標籤中 加 default-lazy-init 這個使用比較少
  也可以在 bean標籤中 加 lazy-init="true"

11.什麼是DI
  Dependence  Injection   依賴注入   解決組件的裝配問題
  DI 其實是對IOC (控制反轉) 的一種具體實現手段
12.DI的實現方式
  12.1 setter 注入
             基於set方法的注入
      <bean id="player" class="com.xdl.bean.Player">
            <property name="name" value="小馬哥"></property>
            <property name="age" value="38"></property>
            <property name="money" value="1000000000"></property>
            <property name="card" ref="card1"></property>
       </bean>
   12.2 構造器注入
        按照參數的位置 來指定對應的構造方法的參數值
    <!-- 創建一個玩家 名字是王詩齡  45  1  -->
       <bean  id="xiaohua"  class="com.xdl.bean.Player">
            <constructor-arg  index="0" value="王詩齡"></constructor-arg>
            <constructor-arg  index="1" value="8"></constructor-arg>
            <constructor-arg  index="2" value="111" ></constructor-arg>
            <constructor-arg  index="3" ref="card1"></constructor-arg>
       </bean>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章