專案使用了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...