springIOC和springAOP

ioc利用的是java反射機制,aop利用代理模式。
springioc是控制反轉,最大的好處就是降低了對象之間的耦合度,在一個系統之間有些
具體如何實現的不需要我們理解他。只需要知道她是怎麼用的就行了。就可以了。
這裏的對象創建依靠的是springioc,而不是開發者主動創造的。主動創建的模式,責任歸於
開發者,而在被動創建的話,責任就是ioc容器。基於這樣的創建的模式,就說對象唄控制反轉

spingioc的作用就是他可以容納我們開發的各種的Bean,我們可以在容器中獲取容器中的Bean.
SpringIOC容器的設計主要是基於BeanFactory和ApplicaionContext.兩個接口。是ApplicationContext
是BeanFactory的子接口。但是ApplicationContext對BeanFactory接口的進行了擴展。所以我們我們用xml配置的話,就是用ClassPathXmlApplicationContext來初始化springioc的容器。
接下來就是bean的定義和初始化,這是兩個步驟。是先定義,然後初始化的。
根據開發者的配置,我們常用的就是xml或者註解,就是載入後,就會發布在springioc的容器上。這裏
及時單純的定義了。但是並沒有被實例創建。然後springBean有一個配置選項就是lazy-init.這就就是
相當於懶加載的作用。他的默認是是defalut。但是實際值就是false.springioc會默認初始化Bean.

 

spring有幾種配置方式?
基於xml配置   基於註解配置   基於java配置
如何實現java配置的方式配置java:
Spring對java配置的支持是由@Configuration註解和@Bean註解來實現的,有@Bean註解的方法將會實例化,配置和初始化一個對象,這個對象將有Spring的IOC容器來管理。@Bean聲明起到的作用域bean域</bean>元素類似。
被@Configuration所註解的類表示這個類的主要目的就是作爲bean的定義的資源。被@Configuration聲明的類可以通過在同一類的內部調用@bean方法來設置嵌入bean的依賴關係。

 

談談你對springAOP的理解:

簡單總結一下spring的AOP.
利用一種稱爲橫切的技術。,支持將公共業務提取出來(列如:安全/事務/日誌)進行集中管理,面向核心業務編程,
只需要關注業務本身 ,而不用去關注公共業務。使用AOP可以將那些與業務無關,卻爲 業務模塊所共同調用的邏輯會責任封裝起來(這裏我們比如就是數據庫事務一些try,catch,finally。裏面就是打開數據庫的連接,數據的提交會回滾。我麼  業務中穿插着就是數據庫的提交和回滾。最後在finally裏面關閉SqlSession。).便於減少系統的重複代碼。降低模塊之前的耦合度。有利於未來可擴展性和可維護性。。

Spring中實現aop的方式有三種,分別爲,基於AspectJ注入切面,基於xml配置AOP,基於ProxyFactoryBean和對應的aop實現。
代理實現。但是的底層都是 動態代理實現的。動態代理有JDK代理和CGlib動態代理。AOP默認的是JDK動態代理。
當目標類沒有接口 時,也可以在配置文件中配置proxy-target-class=true.只使用CGLIB動態代理。


aop不是Spring所特有的 只是支持Spring支持aop編程的框架之一。。有些aop能夠對方法參數進行攔截。有些aop
可以對方法進行攔截。而SpringAOP是一種基於方法的aop攔截。
這是書上的總結:AOP是通過動態代理模式,帶來了掌控各個各個對象的切面環境。管理包括日誌,數據庫事務等操作。讓我們擁有可以在反射原有對象方法前正常返回。異常返回事後插入自己的邏輯代碼。在一些常用的流程中,‘比如是數據庫事務,aop會提供默認默認的邏輯實現。

切面:
選擇了連接點,就可以創建切面了。對於動態代理的概念而言,她就是一個攔截器。在Spring中只要你@Aspect
註解了一個類,那麼Springioc註解一個類。那麼Springioc容器就會認爲這是一個切面了。


切點:這是一個告訴Spring AOP在什麼時候啓動攔截並織入對應的流程中,因爲不是所有的開發都需要開啓aop。
她往往通過正則表達式進行限定的。


 連接點:spring是方法級別的aop框架,而我們主要也是以某個類的某個方法作爲連接點。(比如通過切點的正則表達式去判斷是連接點,從而織如對應的通知)用動態代理來說。就是攔截那個方法織如對應的aop通知。


 通知:通知是切面開啓後,切面的方法。她根據在代理對象的真實方法前,後的順序和邏輯區分。。這就攔截器的方法很相近。
spring切面可以應用五種類型的通知
1.前置通知
2.後置通知
3.環繞通知’
4.返回後通知
5.異常通知。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章