spring中最重要的就是ioc和aop
ioc也稱控制反轉,其實是和依賴注入的含義是一樣的
通常是以下兩種
1. 設值傳入(set注入)
一般是在spring配置的xml中書寫(注意一般是設定類的property的name和ref)
name="springaction"
class="com.bless.springdemo.action.springaction">
name="springdao"
ref="springdao">
property>
bean>
name="springdao"
class="com.bless.springdemo.dao.impl.springdaoimpl">
bean>
構造方法傳入
一般是在spring配置的xml中書寫(注意一般是設定類的constructor-arg,如果引數型別一樣,可以用index區分,用type區分型別如type=」int」)
id="stu1"
class="com.linbingwen.stu1">
index="0">
飛龍value>
constructor-arg>
index="1">
男value>
constructor-arg>
type="int">
26value>
constructor-arg>
bean>
另外還有介面注入:在介面中定義要注入的資訊,並通過介面完成注入
面向切面程式設計
從業務邏輯中分離出來的橫切邏輯,比如效能監控,日誌記錄,許可權控制等,它主要運用了動態**技術(jdk動態**,cglib**)。
jdk動態**建立**時快,執行慢
cglib**建立**時慢,執行快
個人的理解:其實它的主要目的就是在不改動原有業務邏輯的基礎上增加部分上述的功能
單個配置:proxyfactory
自動**(掃瞄bean名稱):配置檔案中使用beannameautoproxycreator,為指定bean名稱的類生成**
自動**(掃瞄切面配置):配置檔案中使用defaultadvisorautoproxycreator,為指定的方法生成**
使用最原始的spring aop的問題:在需要大量切面配置的時候,配置檔案中會有很多切面配置
spring引入aspectj後解決了大量配置檔案的書寫,使用註解能很方便的生成**
在類上標註@aspect註解表面該類是乙個aspect
可以使用@pointcut定義攔截的方法,或者使用在下面這些註解中使用execution
@before 前置增強
@after 後置增強
@around 環繞增強
@afterthrowing 丟擲增強
@decarepareent 引入增強(b類不用直接實現a介面,而是在編寫b類**時直接引入a介面實現)
@afterreturning 返回後增強
執行順序
如果方法內部丟擲了異常
注意:around裡method之後的內容不執行,直接進入after
spring aop @before @around @after 等 advice 的執行順序
Spring中IOC和AOP詳解
我們是在使用spring框架的過程中,其實就是為了使用ioc容器 依賴注入,和aop 面向切面程式設計,這兩個是spring的靈魂。主要用到的設計模式有工廠模式和 模式。ioc就是典型的工廠模式,通過sessionfactory去注入例項。aop就是典型的 模式的體現。在傳統的程式設計中,當呼叫者需...
Spring中的IOC和AOP概念
ioc和aop是spring中的兩個核心的概念,下面談談對這兩個概念的理解。所謂依賴,從程式的角度看,就是比如a要呼叫b的方法,那麼a就依賴於b,反正a要用到b,則a依賴於b。所謂倒置,你必須理解如果不倒置,會怎麼著,因為a必須要有b,才可以呼叫b,如果不倒置,意思就是a主動獲取b的例項 b b n...
Spring的IOC和AOP原理
對spring的理解 spring是乙個輕型容器,其核心是bean工廠,用以構造我們所需的model。ioc 依賴注入,又叫控制反轉。利用了工廠模式 ioc中將物件交給容器管理,你只需要在spring配置檔案中配置對應的bean以及相關的屬性即可,讓spring容器來生成類的例項物件以及管理物件,當...