javascript
Spring 2.x AOP 配置方式整理
來源:http://www.javaeye.com/topic/320553
?
spring官方手冊給出的配置實例。
--------------------------------------------------------------------------------
?
讓我們假定你所有的服務層類定義在以?'x.y.service'?為根的包內。 為了讓service包(或子包)下所有名字以?'Service'?結尾的類的對象擁有默認的事務語義,你可以做如下的配置:
Xml代碼?下面的配置示例演示了兩個擁有完全不同的事務配置的bean。
Xml代碼?在service接口所有的方法上執行的一個業務service方法。這里的定義假設所有的接口都被
放置在service包內,它們的實現被放置在service包的子包內。
如果你按照功能對接口進行分組(例如:包com.xyz.someapp.abc.service,com.xyz.def.service),
則這種情況下這個切點表達式應該是:"execution(* com.xyz.someapp..service.*.*(..))"
?
在dao接口上定義的所有方法內執行一個數據訪問操作。這個定義假設所有的dao接口定義
在dao包內,實現被放置在了子包內。
?
任何一個名字以“set”開始的方法的執行:
Xml代碼??
AccountService?接口定義的任意方法的執行:
Xml代碼??
在service包中定義的任意方法的執行:
Xml代碼??
在service包或其子包中定義的任意方法的執行:
Xml代碼??
?
其他的例子:?
--------------------------------------------------------------------------------?
兩個數據源,兩個數據庫事務攔截器,兩個數據庫事物切點。
execution組合表達式表述數據庫事務切點:
大部分service類的方法使用數據源txManager-datasourceone,對應事物切點txPointcut-datasourceone,事物攔截器txAdvice-datasourceone;
service層PublishService類的幾個方法使用數據源txManager-datasourcetwo,對應事物切點txPointcut-datasourcetwo,事物攔截器txAdvice-datasourcetwo;
一個自定義方法攔截器RuntimeLogInterceptor(攔截每個方法,并記錄每個方法的執行日志),攔截切點runtimeLogInterceptorPoint;
總結一下:?
--------------------------------------------------------------------------------
?
1,pointcut既可以定義在一個接口上面(表示實現該接口的類方法將被攔截),同時也可以定義在一個類上面(無接口的情
?? 況,需要強制使用cglib)。在接口上面定義pointcut時無需關心接口實現類的具體位置,只需要定義被攔截的接口及方
?? 法位置。
2,常見的情況:
x.y.service..*Service.*(..)
x.y.service —— 包“x.y.service”
x.y.service.. —— 包“x.y.service”及其子包例如:“x.y.service.abc”,“x.y.service.def”,“x.y.service.ghi”,“x.y.service.jkl”。。。
*Service —— 定義接口(或沒有實現接口的類,需要使用cglib代理)表達式;所有以Service結尾的類或接口,注意不是所有以Service結尾的包名。
*(..) —— 定義方法名,方法參數表達式;任意方法的名稱,任意方法參數。
com.xyz.service.*.*(..)
com.xyz.service —— 包“com.xyz.service”
*.*(..) —— 任意接口(或沒有實現接口的類,需要使用cglib代理),任意方法,任意參數
在service包下定義的任意方法的執行。
com.xyz.service..*.*(..)
com.xyz.service —— 包“com.xyz.service”
com.xyz.service.. ——包“com.xyz.service”及其子包
*.*(..) —— 任意接口(或沒有實現接口的類,需要使用cglib代理),任意方法,任意參數
總結
以上是生活随笔為你收集整理的Spring 2.x AOP 配置方式整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RTX 30清仓大甩卖!价格全线暴跌 最
- 下一篇: 小米应用商店新增 CarWith 智慧车