|
||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| Before Advice | ||||||||||||
|
Before AdviceはJoinpointの前に処理を追加します。 Before Adviceを作成するには、インターフェースorg.springframework.aop.MethodBeforeAdvice(リスト3)を実装して処理を記述する必要があります。 リスト3:MethodBeforeAdvice |
||||||||||||
public interface MethodBeforeAdvice extends BeforeAdvice {
|
||||||||||||
|
リスト4はBefore Adviceの実装例です。 リスト4:BeforeAdviceの実装例 |
||||||||||||
public class TraceBeforeAdvice implements MethodBeforeAdvice {
|
||||||||||||
| Throw Advice | ||||||||||||
|
Throw AdviceはJoinpointで発生した例外に対する例外処理を追加したいときに利用します。 Throw Adviceを作成するには、インターフェースorg.springframework.aop.ThrowsAdviceを実装して例外処理を記述します。 インターフェースThrowsAdviceには、実装すべきメソッドは何も定義されていませんが、ThrowsAdviceを実装するクラスには、リスト5に示すafterThrowingメソッドを記述する必要があります。 リスト5:メソッドafterThrowingの定義 |
||||||||||||
afterThrowing(Throwable subclass)
|
||||||||||||
|
SpringのAOPは、記述されたafterThrowingメソッドのパラメータに定義された例外の型を参照して、Joinpointで発生した例外を振り分けてくれます。 例えば、ApplicationExceptionを捕捉して処理を追加したい場合は、リスト5の(1)のメソッドを利用して、リスト6の(1)のように実装します。 |
||||||||||||
|
リスト6:ThrowsAdviceの例 |
||||||||||||
|
例外が発生したメソッドやその引数、例外が発生したクラスの情報を受け取りたい場合は、リスト5の(2)のメソッドを利用します。例えば、キー重複エラーを示すDataIntegrityViolationExceptionを捕捉するにはリスト6の(2)のように実装します。 SpringもSeasar2と同様に継承関係にある例外を指定したメソッドが同じクラス内に定義されている場合でも、発生した例外から基底となるクラスにさかのぼって振り分けを行います。そのため、try-catchで例外を判定する場合のようにメソッドの順序を気にする必要がありません。 |
||||||||||||
| After Returning Advice | ||||||||||||
|
After Returning Adviceは、Joinpointが正常終了した後に処理を追加したい場合に利用します。 よってJoinpointで例外が発生した場合、After Returing Adviceは呼び出されない点に注意してください。 After Returing Adviceを作成するには、インターフェースorg.springframework.aop.AfterReturningAdvice(リスト7)を実装して処理を記述します。 リスト7:インターフェースAfterReturningAdvice |
||||||||||||
public interface AfterReturningAdvice extends Advice {
|
||||||||||||
|
リスト8にインターフェースAfterReturningAdviceの実装例を示します。 リスト8:インターフェースAfterReturningAdviceの実装例 |
||||||||||||
public class ObserverAfterReturningAdvice implements AfterReturningAdvice{
|
||||||||||||
| Advisor | ||||||||||||
|
SpringでAOPを利用するには上記に示したAdviceを継承もしくは実装したクラスを開発者が作成し、Bean定義ファイルにPointcutを作成するための条件を記述しAdviceと関連付けをする必要があります。 Advisorは、Springが提供するクラスでAdviceとPointcutをまとめるためのものです。 Advisorは開発者が実装すべきものではなく、Springが提供するAdvisorをBean定義ファイルに記述して利用するものです。 SpringではPointcutはAdvisorに内包した形で提供されていますので、Bean定義ファイルにAdvisorを設定する時にはPointcutを作成するための条件だけを記述します(リスト9)。 リスト9:Advisorの設定 |
||||||||||||
<bean id="myAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
|
||||||||||||
|
表3は、Springから提供されるAdvisorの種類です。Advisorは利用するPointcutの種類に応じて選択し、Bean定義ファイルに記述します。 |
||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||




