spring aop execution表現の使い方
1.すべてのcontrollerの下の要求を切ります。
プロジェクト構造
任意の公共方法の実行:
切込み点の設定:
識別子
意味
execution()
式の本体
最初の「*」記号
戻り値の種類を任意に表します。
col.qy.web.system.com ntroller
AOPで切断したサービスのパッケージ名、すなわち、横に切断する必要がある業務類
パッケージ名の後ろの「.」
現在のカバンと子供のカバンを表します。
二つ目の「*」
クラス名*はすべてのクラスです。
.*(.)
任意の方法名、括弧はパラメータ、二つの点は任意のパラメータタイプを表します。
複数の接線点が必要であれば、𞓜𞓜符号を使って次のようにすることができる。
2.Springにおけるexecution文法
文法書式
execution(修繕子の返却タイプの切り込み点類の切り込み方法(パラメータ)の異常ショット)修繕子:オプションで、ワイルドカードをサポートします。 リターンタイプ:必須、ワイルドカードサポート、*を使用してすべての戻り値タイプ にマッチすることができます。エントリポイントクラス:オプションで、ワイルドカードをサポートし、ポイントクラス を指定します。入力点方法:必須、ワイルドカードサポート、マッチングする方法名を指定し、「*」ワイルドカードを使用して、すべての方法にマッチすることができます。 パラメータ:無記入の場合、指定方法声明のイメージリストは、2つのワイルドカード、すなわち*と をサポートします。
ここで*は任意のタイプのパラメータを表し、…はゼロまたは複数の任意のタイプのパラメータを表します。()任意のパラメータを受け付けない方法にマッチする 。(…)任意の数のパラメータを受け入れる方法に適合することは、ゼロまたは複数の であってもよい。(*)は、一つのタイプのパラメータを受け入れる方法と一致します。一つの だけです。(*、String)は、2つのパラメータを受け入れる方法と一致し、第1のパラメータは任意のタイプであり、第2のパラメータは、Stringタイプ でなければならない。
例外投げ:オプション、ワイルドカード対応、指定方法宣言の投げ出し異常
一般的な例
プロジェクト構造
任意の公共方法の実行:
execution(public * (…))
葃葃publicは省略できます。第一の代表方法の任意の戻り値第二のパラメータは任意のパック+種類+方法(…)を表します。切込み点の設定:
@Pointcut("execution(* com.gcol.qy.web.system.controller..*.*(..))")
public void conPoint(){}
式の構造は次のように説明されています。識別子
意味
execution()
式の本体
最初の「*」記号
戻り値の種類を任意に表します。
col.qy.web.system.com ntroller
AOPで切断したサービスのパッケージ名、すなわち、横に切断する必要がある業務類
パッケージ名の後ろの「.」
現在のカバンと子供のカバンを表します。
二つ目の「*」
クラス名*はすべてのクラスです。
.*(.)
任意の方法名、括弧はパラメータ、二つの点は任意のパラメータタイプを表します。
複数の接線点が必要であれば、𞓜𞓜符号を使って次のようにすることができる。
@Pointcut("execution(* com.gcol.qy.web.system.controller..*.*(..)) || execution(* com.gcol.qy.web.system.api..*.*(..))")
public void conPoint(){}
xml設定
<!-- kpi oracle -->
<aop:config>
<aop:aspect id="dataSourceAspect2" ref="dataSourceInterceptor">
<aop:pointcut id="daoThree" expression="execution(* com.gcol.qy.web.system.service.kpi.KpiServiceImpl.*(..))
|| execution(* com.gcol.qy.web.system.service.team.TeamServiceImpl.getFamilyPremiun(..))
|| execution(* com.gcol.qy.web.system.service.team.TeamServiceImpl.getSalesmanPremium(..))"/>
<aop:before pointcut-ref="daoThree" method="setDataSourceKpi"/>
</aop:aspect>
</aop:config>
ref=「dataSourceInterceptor」が実行する方法クラスです。2.Springにおけるexecution文法
文法書式
execution(修繕子の返却タイプの切り込み点類の切り込み方法(パラメータ)の異常ショット)
ここで*は任意のタイプのパラメータを表し、…はゼロまたは複数の任意のタイプのパラメータを表します。
例外投げ:オプション、ワイルドカード対応、指定方法宣言の投げ出し異常
一般的な例
<!-- 【1、 public 】 -->
<aop:pointcut expression="execution(public * *(..))" id="pt"/>
<!-- 【2、 save 】 -->
<aop:pointcut expression="execution(* save*(..))" id="pt"/>
<!-- 【3、 , 】 -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..))" id="pt"/>
<!-- 【4、 】 -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.*(..))" id="pt"/>
<!-- 【5、 , 】 -->
<aop:pointcut expression="execution(* com..*.*(..))" id="pt"/>
<!-- 【6、 】 -->
<!-- :|| or -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) || execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) or execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />
<!-- :&& and --> <!-- , , -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) && execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) and execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />
<!-- 【7、 :not ! , 】 -->
<aop:pointcut expression="!execution(* com.shore.dao.impl.UserDao.save(..))" id="pt"/> <!-- not -->
<aop:pointcut expression=" not execution(* com.shore.dao.impl.UserDao.save(..))" id="pt"/>
以上は個人の経験ですので、参考にしていただければと思います。