當前位置:編程學習大全網 - 編程語言 - spring中的面向切面編程與面向對象編程方式沖突嗎

spring中的面向切面編程與面向對象編程方式沖突嗎

這麽來說吧,在壹個動作或者事件中,比如說,妳現在想寫字(Action),那麽妳需要筆,於是乎,妳new了壹個筆來寫字,這裏,妳用了new筆,妳這個動作和筆有了關聯,沒了筆,妳就寫不了字,也就是說,妳的這個行為依賴於筆了,他們就構成了依賴關系。或者妳現在想組裝壹臺電腦(Transaction),那麽妳就需要顯示器、主板、鍵鼠光驅等對象,這些對象通常是new出來的,new出來的對象和當前(this)對象就有了依賴關系。

spring中對依賴的對象采用註入,這就是常說的依賴註入吧.

再說AOP,還是以上面的例子。

比如妳想在每次寫字之前都檢查壹下筆裏有沒有墨水了,通常的做法是:在寫字這個Action裏調用判斷是否有墨水的方法。這樣做的不好壹個方面是,寫字的action和是否有墨水的方法產生了依賴,如果妳有十幾支不同的筆寫字,每壹個筆的Action裏都要調用判斷是否有墨水的方法;另壹個方面是:就面向對象的程序設計來說,寫字和判斷是否有墨水的方法是同壹等級的,如果妳讓寫字這個動作來判斷是否有墨水不夠人性化,有違面向對象的程序設計的思想。

如果用Spring的AOP,是把寫字的Action作為壹個切面,在每次調用不同的筆來寫字的方法之前,調用判斷是否有墨水的方法。它是由<aop:config/>標簽在Spring配置文件裏定義的,形式如:

<aop:config>

<aop:pointcut id="allManagerMethod" expression="execution(* com.baidu.dao.write*(..))"/>

<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>

</aop:config>

這裏,對com.baidu.dao下所有以write開頭的方法做了壹個切面,做要做的操作是以下面的pointcut-ref="allManagerMethod"來定義的。

具體到妳這個配置文件,這裏沒有AOP,只有IOC。

  • 上一篇:我是個快高考的學生,問壹下,有關於山東歷史和山東地理的有關知識,謝謝個位知道的人幫忙整理壹下,謝謝了~~
  • 下一篇:2014年度山東省萊西市事業單位招聘簡章
  • copyright 2024編程學習大全網