自製aop和註解

2021-08-10 13:00:08 字數 1263 閱讀 1368

專案使用了jdbc的多資料來源連線,這我要吐槽一下原來的專案了。沒介面,**寫在jsp中。我也是服了,spring掃瞄包和springmvc掃瞄一樣的包,這就是帶我今天入坑的原因之一。

//建立叫做datasource的註解,可以作用在類上和方法上

@target()

@retention(retentionpolicy.runtime)

public @inte***ce datasource

乙個簡單的註解,主要是為了切換執行緒物件中的資料來源,讓多資料來源可以切換使用。

id="datasourceaspect"

class="com.ht.aspect.datasourceaspect" >

bean>

proxy-target-class="true">

ref="datasourceaspect">

id="datasourcepointcut"

expression="execution(* com.ht.dao.*.*(..))"/>

pointcut-ref="datasourcepointcut"

method="intercept"/>

pointcut-ref="datasourcepointcut"

method="intercept"/>

aop:aspect>

aop:config>

public

class

datasourceaspect

//最後檢視實現的類,但是類中配置了註解的不同值,會覆蓋介面的。

resolvedatasource(target, signature.getmethod());

}/**

* 提取目標物件方法註解和型別註解中的資料來源標識

* *@param clazz

*@param method

*/private

void

resolvedatasource(class<?> clazz, method method)

// 方法註解可以覆蓋型別註解

method m = clazz.getmethod(method.getname(), types);

if (m != null && m.isannotationpresent(datasource.class))

} catch (exception e)

}}

aop 註解方式

直接 demo 1.介面 package com.bird.service public inte ce personserver 2.實現類 package com.bird.service.impl import com.bird.service.personserver public clas...

註解實現AOP

使用註解實現aop,注意版本問題,使用註解報錯要匯入m en依賴 dependency groupid j ax.annotation groupid artifactid j ax.annotation api artifactid version 1.3.2 version dependency...

使用註解實現AOP

xml標頭檔案中加入 xmlns context xsi schemalocation spring context.xsd 宣告哪些包下有註解 當有兩個以上的包時,用 隔開 在demo類中加入 component 在方法上新增 pointcut 定義切點 component public clas...