天天看點

Spring核心是什麼Spring核心(重點來了!!!!)事務是什麼??

Spring核心詳解!!!

Spring出現的原因?

Spring出現的原因 解除耦合

軟體開發的開閉原則:通過多态實作,要麼子類重寫父類,要麼增加方法

提高抽象層次;

提高抽象層次的方法

把子類對象賦給父類對象進行使用的動态多态

注入Injection:某一個類想要什屬性,通過set方法給他 就叫注入

依賴注入 Depenency Injection =DI 有set就能活 沒有就錯誤

配置檔案(反射)

Spring如何解除耦合

解耦合:首先解除邏輯耦合

mvc模式第一次解除了邏輯耦合

spring的IOC是進行深度解耦

日志:用來保持程式的健壯性,就是程式的運作記錄

代理需要在jdk1.5以上版本使用

jdk代理是基于反射的沒有反射就沒有辦法通用

調用代理類的的任何方法,都會執行到invoke方法

代理是模式

代理機制其實真正的代理的是方法

代理:proxy

代理的本質就是原産品不動,不做任何改變

要增值

要包裝

代理分類:

一.靜态代理:門面模式或裝飾模式

缺點:需要為每一個被代理的方法都寫一個代理方法,修改的時候特别值複雜,不靈活

二.動态代理

1.jdk動态代理:缺點:要想代理對象,被代理對象必須有接口,否側不能代理

2.CGLIB代理:優點:在被代理類沒有接口的情況下也能夠被代理,實際就是為目前類生成一個子類

代理類和被代理類都需要實作同一個接口,代理類中包含一個被代理類的對象,可以提供兩種方式把被代理對象賦給代理對象

調用被代理類,實作真正的邏輯,在自己的裡面實作額外邏輯.

代理最終的要求就是簡單通用靈活

Spring核心(重點來了!!!!)

Spring是一個無侵入式的輕量級開源架構

Spring兩大特性 :

1.IOC:控制反轉

IOC作用:解除類與類之間的關系耦合

解除耦合的方式用了四個技術點:

  1. 配置
  2. 容器
  3. 反射
  4. 注入(DI):利用set方法或者構造器給屬性指派

2.AOP:面相切面程式設計

作用:為了解除業務邏輯耦合,例如耦合或者資料業務邏輯日志業務

AOP實作原理是基于代理的

Spring進行内部實作的時候 ,會檢測是否存在接口,存在時選擇jdk動态代理,不存在選擇CGLIB代理

Spring類似一個管家,後期幾乎所有内容都交給Spring管理,View層Spring不管理,與java相關的全部管理.(Spring容器)

Spring的核心思想是解除程式中的耦合(解除了業務邏輯耦合,解除了類與類之間的關系耦合)

輕量級與重量級的區分:

1.性能開銷

2.架構本身的大小問題

3.使用的難易程度

Spring中所有的行為都是基于Spring能夠管理所有的類

Spring也有持久層架構,但是因為性能不強,是以沒有人用,用來給hibernate和mybitas支援

Spring對web架構也是有支援的

Spring還是一個mvc結構的架構

Core解除的是類級别的耦合

AOP解除的是方法級别的耦合

IOC控制反轉 Inversion Of Control

高層子產品不應該依賴底層子產品(如Action依賴Dao層)

實作必須依賴抽象,而不是是抽象依賴實作

依賴注入:Dependency Injection

DI是IOC的核心實作原理

通俗的說就是利用set方法或者構造器給屬性指派

搭建Spring環境:

1.加入jar包

2.寫配置檔案:applicationContext.xml 必須放在Src下 可以更改名字一般叫Spring.xml

一個Spring可以對應多個XMl檔案,配置檔案的劃分是根據業務邏輯劃分的

跟标簽裡寫東西是Schema

Spring的核心是一個context容器

想要什麼對象就在spring中配置這個對象

Spring會自動建立對象并且進行初始化

注入類型分為三類:

Type1 侵入式(依賴Spring)

Type2 (set/get) 和type3(構造器注入)是非侵入式

Spring中的接口是為了提高抽象層次,是變量接收的一個中介,是以Srping不需要管理接口

所謂的元件就是可以直接執行個體化,可以直接用的

構造器注入 裡面的屬性 ref=references引用 index要指派屬性的下标,從0開始

構造器注入唯一的優點就是時效性好,建立對象時直接指派.

構造器注入作為了解 不需要掌握

構造器和set/get方法同時存在時取決于set/get方法

Spring核心是什麼Spring核心(重點來了!!!!)事務是什麼??

命名空間的引入和标簽的引入差不多,不引用就不能用

當要注入的元件隻有一個類型,注解後可以不配置,當有多個同一類型元件時,注解必須手動指定比對的對象.

使用annotation注入就是為了0配置,resource自動配置屬性,這是spring第一次使用0配置

0配置就是使用annotation的方式替代xml中配置的方式都叫0配置

使用Aop是最終使用annotation方式

Aspect Oriented Programming面向切面程式設計

切面就是系統服務邏輯

AOP的實作種類

1.實作Spring API的傳統模式 侵入式實作已經淘汰(spring提倡無侵入式程式設計)

2.基于xml的設定

3.基于annotation配置

Spring核心是什麼Spring核心(重點來了!!!!)事務是什麼??

如上:

隻要想寫切點,必然要寫 pointcut="execytion( * 包名+類名. * (…))"第一個 * 指任意傳回值類型 第二個 * 表示所有方法 …表示任意參數

AOP基于代理的

最最最最常見的注解

Spring核心是什麼Spring核心(重點來了!!!!)事務是什麼??

事務是什麼??

事物Transaction: 就是一件完整的事情:由一條或者多條sql語句組成,要麼全部執行成功,要麼全部執行失敗.

例如(增删改,或者查詢時加了for update 為了加上鎖定事物,意思就是我操作完成後,别人才能操作目前對象)

事物的特點:1.最小單元—原子性(不可再分割)

例如:必須有兩條sql語句才能完成一次删除部門的操作;

2.一緻性

例如:資料改變之前的狀态和改變之後的狀态一緻;

3.持久性

例如:資料修改完畢後應該是一個持久狀态存在資料庫中,而不是臨時的;

4.隔離性(當一個事物占用某一個資源的時候,其餘的事物隻能進行等待,等待釋放對于資源的占用)