基礎XML配置的AOP與基於註解實現的AOP詳細對比

aop思想通過動態代理,一定程度上實現了代碼的解耦。我們可以將日誌模塊,權限校驗,事物等模塊,與核心的業務代碼相隔離,讓程序員在寫代碼的時候,能夠更加專注於業務。

基於註解實現AOP步驟:

①將目標類與切面類都加入到ioc容器中。
目標類該用啥註解用啥,切面類通常用@Component即可。另外,記得在applicationContext.xml文件中配置包掃描。
②爲切面類標註@Aspect註解,告訴Spring哪些是切面類。
③在切面類的各個通知方法中,標註註解,並配置切入點表達式,高數spring這些通知方法都何時何地執行。
④開啓基於註解的AOP功能。 <aop:aspectj-autoproxy/>

以上的操作,可能是我們更加熟悉的開發方式,畢竟註解相較於配置方便很多很多。但是,xml配置也有它自有的優點,那就是功能更加完善。比如一個第三方的jar包,當我需要引用其中的一個切面類時,註解的方式就顯得有些喫力了。xml配置方式就能很好的補足了這一點。
另外,重要的切面類,一般習慣放置在xml配置中,比如重要的權限驗證,事物隔離等。

基於xml配置的AOP步驟:
①配置bean
所有加入到ioc容器的組件,在配置文件中使用bean標籤進行管理。

<bean id="xxx1" class="xxxx1"/>

②指定切面
對應@Aspect註解,我們需要在aop名稱空間下進行切面類的配置
每一個<aop:aspect>標籤相當於一個@Aspect註解,屬性中的ref需要填寫<bean>標籤中切面類的id。

<aop:config>
	<aop:aspect ref="xxx1">
	</aop:aspect>
</aop:config>

③配置通知方法
繼續在第二步的<aop:aspect>標籤內部配置通知方法對應的標籤,與註解的命名方式幾乎一模一樣。method爲切面類中的通知方法;pointcut爲切入點表達式;returning指定返回通知的返回參數;throwing指定異常通知的異常參數。

<aop:config>
	<aop:aspect ref="xxx1">
		<aop:before method="" pointcut="">
		<aop:after method="" pointcut="">
		<aop:after-returning method="" pointcut="" returning="">
		<aop:after-throwing method="" pointcut="" throwing="">
		<aop:around method="" pointcut="">
	</aop:aspect>
</aop:config>

④開啓基於註解的AOP功能。 <aop:aspectj-autoproxy/>

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