這一週的學習內容包括:mybatis、spring的個層次,spring ioc/aop/mvc,這些內容的理解須要深度記憶,由於有些概念不太好理解。並且這一週週末因爲搬家的緣由,致使沒有好好複習,下一週要好好努力遇上進度。java
1.mybatisweb
mybatis是支持普通SQL語句查詢,存儲過程和高級映射的優秀持久層框架,mybatis可使用簡單的xml和註解用於配置和原始映射,將接口和Java的POJO(plain old java objects)即普通Java對象映射成數據庫中的記錄。spring
每個mybatis的應用程序都以一個sqlSessionFactory對象的實例爲核心,sqlSession由sqlSessionFactory建立,sqlSession徹底包含以數據庫爲背景的全部執行SQL操做的方法,能夠用它來直接執行已映射的SQL語句。sql
配置mybatis的xml文件必需要有頭部申明,以及五個元素:environments environment dataSource transactionManager mapper.數據庫
mybatis中最具備魅力的是動態sql語句和resultMap,其中動態sql語句採用與jstl相似的標籤來生成sql語句。如<if test=""></if> <choose><when></when>...<otherwise></otherwise></choose> <where></where> <set></set> <foreach></foreach> <sql id=""></sql>標籤中的sql語句片斷能夠重用(和<include refid=""/>配合使用)。編程
resultMap:完成關係映射,一對一,一對多,多對多的場景下使用<collection></collection> 而多對一狀況下使用 <association></association>,還有鑑別器<discrimination></discrimination>能夠將結果集按照配置進行分類。設計模式
對於主鍵自增,若是數據庫支持自動自增,則能夠直接用userGeneratedKeys="true" keyProperty="id" 如果不支持,則須要加上<selectKey keyProperty="" order="BEFORE"></selectKey>標籤,包含序列產生語句。服務器
statementType屬性用於支持STATEMENT,PREPARED和CALLABLE語句的映射類型,設置爲callable時,可使用{call procedureName()}來調用存儲過程或函數mybatis
2.springmvc
spring是分層次的框架,每一個層次都能獨立使用,且與其餘框架整合,
2.1,spring中核心容器的主要組件是beanFactory,它是工廠模式的實現,beanFactory使用控制反轉(ioc)模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開,使用spring,你沒必要在程序代碼中強維護對象的依賴關係,只須要配置文件中加以設定,spring的核心容器會自動根據配置將依賴注入指定的對象。
控制反轉反轉的是什麼?反轉的是組件之間的依賴關係的建立方式,組件自己不主動與其餘組件創建直接的關係,依賴將在組件之外的某個地方(組件管理者或容器)創建。想用容器給組件注入依賴,組件須要給容器預留一些注入依賴的方法(callback),有三種:1,經過接口,2,經過setter,3,經過構造函數。spring提供方式2和3的ioc實現。
分層結構:表示層---業務邏輯層---數據訪問層---數據庫;面向接口編程:利用接口能夠忽略不一樣底層的實現,用統一的方式進行調用。
在spring的配置文件中,<bean></bean>標籤的scope屬性有"singleton"(每次返回相同的實例),"prototype"(每次返回不一樣的實例),default-autowire="ByName"和"ByType"兩種,byname根據屬性名字來自動裝配,而byType由類型匹配來自動裝配,通常使用ByType。spring有兩種加載方式,當即加載和延遲加載。默認爲當即加載。
2.2,Spring上下文,spring上下文是一個配置文件,向spring框架提供上下文信息;
2.3,spring aop,經過配置管理特性,spring aop模塊直接將面向方面的編程功能集成到了spring框架中,能容易的使spring框架管理的任何對象支持aop,aop中爲這些對象提供了事務管理服務,不用依賴EJB組件,就能夠將聲明性事務管理集成到應用程序當中。
定義和概念:切入點pointcut,通知advice,面向方向模塊advisor,aop代理。普通代理和動態代理都是 :1,先把須要被代理的方法在接口中聲明,而後寫被代理類Target類,再寫代理類,代理類不關心業務邏輯,只專一於事務處理,因此要引入被代理類。
分離關注:所謂分離關注就是將某一通用的需求功能從不相關的類之中分離出來;這樣使不少類共享一個行爲,而且一旦行爲發生改變,也沒必要修改不少類,只要修改這個行爲就行。設計模式追求的就是調用者和被調用者之間的解耦。
AOP的核心思想就是將應用程序中的業務邏輯處理部分同對其提供支持的通用服務,即所謂的「橫切關注點」進行分離,這些「橫切關注點」貫穿了程序中的多個縱向模塊的需求。
動態AOP,使用JDK的動態代理API或字節碼Bytecode處理技術,基於動態代理API的具體項目有:JBoss4.0,JBoss4.0服務器,基於字節碼的項目有:aspectwerkz,spring.
橫切關注點,在一個服務流程中插入與業務邏輯無關的系統服務邏輯,這樣的邏輯被稱爲cross-cutting concerns,如logging,security;
切面aspect,將散落在各個業務對象之中的cross-cutting concerns收集並獨立起來,設計爲各個獨立的可重用的對象,這些特殊對象就是Aspect,切面用spring的advisor或攔截器實現。
鏈接點joinpoint,程序執行過程當中明確的點,如方法的調用或異常的拋出點,在spring的AOP實現中,鏈接點老是一個方法調用。
通知advice:在特定的鏈接點,AOP框架執行的動做。spring是以攔截器作通知模型,維護一個「圍繞」鏈接點的攔截器鏈。
切入點pointcut:指定一個通知將被引起的一系列鏈接點的集合。advisor = advice + pointcut
引入,目標對象,AOP代理,織入(weave),織入方式有幾個時間點,編譯時期,類加載時期,執行時期,spring在運行時期完成織入。
CGLIB代理與動態代理的區別:前者是經過在運行期產生目標類的子類來進行工做的,後者是經過代理一個過或多個接口。
2.4,spring mvc,mvc框架是一個全功能的構建web應用程序的mvc實現,經過策略接口,mvc框架變成高度可配置的。