1. 程式人生 > >第五章 Spring核心概念

第五章 Spring核心概念

  5.1.1 企業級應用開發

   企業級應用是指那些為商業組織,大型企業而建立部署的解決方案及應用,大型企業級應用的結構複雜,涉及的外部資源眾多,事務密集,資料規模大,使用者數量多,有較強的安全性考慮和較高的效能要求

Spring是企業應用開發的 一站式 選擇 Spring貫穿表現層,業務層,持久層。

  5.1.2 Spring的 綠草叢

   Spring是一個輕量級框架,大大簡化了Java企業級開發,提供了強大,穩定的功能。

   Spring有兩個主要目標:一是讓現有技術更易於使用,二是促進良好的程式設計習慣。

   Spring是一個全面的解決方案,但它堅持一個原則:不重新發明技術

   Spring Core是框架的最基礎部分,提供了IoC特性,Spring Context為企業級開發提供了便利和整合工具,Spring AOP是基於Spring Core的符合規範的面向切面程式設計的實現。

  5.2.1 理解 “控制反轉”

  控制反轉也稱為依賴注入,是面向物件程式設計中的一種設計理念,用來降低程式程式碼之間的耦合度。

  什麼是依賴,依賴 在程式碼中一般指通過區域性變數,方法引數,返回值等建立的對於其他物件的呼叫關係。

  不在依靠自身的程式碼去獲得所依賴的具體DAO物件,而是把這一工作轉交給了 第三方 從而避免了和具體 實現類之間的耦合。

  5.2.2 Hello,Spring

  Spring 官方的地址 http://repo.spring.io/release/org/springframework/spring

  編寫Spring配置檔案,可在專案中建立專門的SourceFolder 下 建立applicationContext.xml檔案

       <?xml version="1.0"

encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

       <bean id="zg"  class="sjiyi.Shangjiyi">

       <property name="zhangga">

          <value>張嘎</value>

          </property>

          <property name="rod">

             <value>三天不打鬼子,手都癢癢</value>

          </property>

       </bean>

       <bean id="r"  class="sjiyi.Shangjiyi">

          <property name="zhangga">

          <value>Rod</value>

          </property>

          <property name="rod">

             <value>世界上有10種人,認識二進位制的和不認識二進位制的</value>

          </property>

       </bean>

</beans>

通過ClassPathXmlApplicationContext例項化Spring的上下文

ApplicationContext  context = new ClassPathXmlApplicationContext(“applicationContext.xml”)

//通過ApplicationContext 的getBean()方法,根據id來獲取Bean的例項

HelloSpring helloSpring = (HelloSpring) context.getBean(“Bean id名”);

5.3.1 理解面向切面程式設計

面向切面程式設計 是軟體程式設計思想發展到一定階段的產物 是面向物件程式設計的有益補充。

切面: 一個模組化的橫切邏輯 可能會橫切多個物件

連線點:程式執行中的某個具體的執行點

增強處理:切面在某個特定連線點上執行的程式碼邏輯

切入點: 對連線點的特徵進行描述,可以使用正則表示式。增強處理和一個切入點表示式相關聯,並在與這個切入點匹配的某個連線點上執行。

目標物件:被一個或多個切面增強的物件

AOP代理:由AOP框架所建立的物件,實現執行增強處理方法等功能

織入:將增強處理連線到應用程式中的型別或物件上的過程

增強處理型別:在原物件的fun()方法之前插入的增強處理為前置增強,方法正常執行完以後插入的增強處理為後置增強,此外還有環繞增強,異常丟擲增強,最終增強等型別

5.3.2 使用Spring AOP實現日誌輸出

 1.在專案中新增Spring AOP相關的jar檔案

 2.編寫前置增強和後置增強實現日誌功能

 3.編寫Spring配置檔案,對業務方法進行增強處理

   新增AOP相關的配置

    Xmlns:aop=http://www.springframework.org/schema/aop

    http://www.springframework.org/schema/aop

    http://www.springframework.org/schema/aop/spring-aop-3.2.xds

 4.編寫程式碼,獲取帶有增強處理的業務物件

Execution 是切入點指示符,它的括號中是一個切入點表示式,可以配置需要切入增強處理的方法的特徵,切人點表示式支援模糊匹配

  Public * addNewUser(entity.User)  * 表示匹配所有型別的返回值。

  Public void *(entity.User) * 匹配所有的方法名

  Public void addNewUser(..): “..” 表示匹配所有引數個數和型別

l  Com.service.*.*(..)  這個表示式匹配com.service包下所有類的所有方法

l  Com.service..*.*(..): 這個表示式匹配com.service包及其子2包下所有類的所有方