注釈データのソースを取得するためのAOP動的切り替え方法
(式@Order(1)アクション:
春は、我々はAOPインターセプトを書いたとき、前のトランザクション場合、例えば、トランザクションAOPバネの実行順序とデータソースをデータソースの動的切り替えの問題を問題に遭遇し、達成するためにAOPでトランザクション内にありますスイッチの後、スイッチの障害は、データソースにつながるので、私たちは、注文(ソート)キーワードを使用していました。)
@Order(1 ) @Aspect @Repository パブリック クラスDataSourceAspect { @Pointcut( "実行(* com.xxx.service.impl。*。*(..))" ) 、プライベート ボイドanyMethod(){} @AfterReturning(値 = = "結果"を返す"anyMethod()" ) 公共 ボイドafterReturning(ジョインポイントジョインポイント、オブジェクト結果){ DataSourceHolder.clearDataSourceType()。 } @Before(値 = "anyMethod()" ) 公共 ボイド(ジョインポイントジョインポイント)前{
// 通过切点对象获取当前切点所在的方法对象 MethodSignature MethodSignature = (MethodSignature)joinPoint.getSignature() メソッド、メソッド = methodSignature.getMethod(); // メソッド本体データソース注釈を使用する場合 IF(Method.isAnnotationPresent(データソース。クラス)){ // 上のプロセスを取得します注釈があった データソースデータソース= method.getAnnotation(データソースクラス); // DataSourceHolderクラスに保持部材注釈データソースの方法に与えられた値 DataSourceHolder.setDataSourceType(datasource.value()); } } }