Spring-MVC/ステップ・バイ・ステップ/AOPの追加
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Spring-MVC/ステップ・バイ・ステップ]]
2008/04/15からのアクセス回数 &counter;
#contents
Springの特徴は、なんと言ってもBean定義でAOPを使ってBeanの...
AOPは以下のような場合に有効です。
- OOPでは対応できない複数のルートクラスに跨る共通の処理を...
- ソースファイルの存在しない市販パッケージに別の機能を組...
- 宣言的トランザクションのように特定の処理を適応する箇所...
** AOPの用語の説明 [#o8eec54f]
AOPでは、聞き慣れない用語がたくさん出てきます。
ここでは、それらを簡潔に説明し、SpringでのAOPの特徴につい...
*** Aspect [#o51c30c3]
Aspectとは、adviceとjoinpointの組み合わせを指定するモジュ...
*** Advice [#t2a184d0]
Adviceとは、pointcutによって指定されたjoinpointのどのタイ...
行うかを定義したものです。
*** Joinpoint [#m8175767]
Joinpointとは、プログラムの実行時にAdviceの割り込ませるこ...
*** Pointcut [#h8425eec]
Pointcutでは、adviceを適応するjoinpointの条件を指定します。
*** SpringでのAOPの特徴 [#b7ec72e7]
pringのAOPは、プロキシーを使ってメソッドへの呼び出しを横...
従って、Springでは、fieldにはAspectを適応できません。
Spring でサポートされている adivceの種類を以下に示します。
| adivceの種類 | インタフェース | 適応箇所 |
| Before | org.springframework.aop.BeforeAdvice | メソッ...
| After-returing | org.springframework.aop.AfterReturning...
| After-throwing | org.springframework.aop.ThrowsAdvice |...
| Around | org.aopalliance.intercept.MethodInterceptor | ...
| Introduction | org.springframework.aop.IntroductionInte...
** ログ出力のAdvice [#p9989823]
各メソッドの入り口と出口でログを出力するAOPを例にSpringの...
最初に各メソッドの呼び出し前とリターン直前にログを出力す...
*** EnterMethodLogAdvice [#de89046f]
メソッド呼び出し前の Advice(Before Advice)は、 インタフェ...
EnterMethodLogAdviceは、以下のようになります。
#pre{{
public void before(Method method, Object[] args, Object ...
throws Throwable {
System.out.print("enter " + method.getName() + " args=(...
if (args != null) {
for (int i = 0; i < args.length; i++) {
if (i != 0)
System.out.print(", ");
System.out.print(args[i]);
}
System.out.println(")");
}
}
}}
Bean定義は、
#pre{{
<bean id="enterMethodLogAdvice" class="org.springframewo...
}}
とします。
*** LeaveMethodLogAdvice [#s4e4f28d]
同様に、メソッドリターン直前の Advice(After Advice)は、 ...
LeaveMethodLogAdviceのソースを以下に示します。EnterMethod...
#pre{{
public void afterReturning(Object returnValue, Method me...
Object[] args, Object target) throws Throwable {
System.out.println("leave " + method.getName() + " retu...
+ (returnValue != null ? returnValue : "null"));
}
}}
Bean定義は、
#pre{{
<bean id="leaveMethodLogAdvice" class="org.springframewo...
}}
とします。
** Pointcut [#ta87f751]
Springでは、Pointcutを正規表現で指定するJdkRegexpMethodPo...
これを使ってfindがメソッド名に付くメソッドにpointcutを
定義すると以下のようになります。
#pre{{
<bean id="logPointcut" class="org.springframework.aop.su...
<property name="pattern" value=".*find.*"/>
</bean>
}}
** Advisor [#qf6bbc80]
logEnterAdvisorとlogLeaveAdvisorは、adviceとpointcutを指...
#pre{{
<bean id="logEnterAdvisor" class="org.springframework.ao...
<property name="advice" ref="enterMethodLogAdvice"/>
<property name="pointcut" ref="logPointcut"/>
</bean>
<bean id="logLeaveAdvisor" class="org.springframework.ao...
<property name="advice" ref="leaveMethodLogAdvice"/>
<property name="pointcut" ref="logPointcut"/>
</bean>
}}
** DefaultAdvisorAutoProxyCreatorの定義 [#q49c657c]
最後にDefaultAdvisorAutoProxyCreatorをBean定義に追加し、...
#pre{{
<bean class="org.springframework.aop.framework.autoproxy...
}}
#ref(applicationContext.xml);
** 実行 [#o0251524]
ブラウザーで実行すると、findAllメソッドの前後でenterとlea...
#pre{{
enter findAll args=()
leave findAll return=[org.springframework.showcase.coverc...
org.springframework.showcase.coverc.domain.Recipe@6d50ae,
org.springframework.showcase.coverc.domain.Recipe@cbf
}}
** コメント [#l056f56b]
この記事は、
#vote(おもしろかった[10],そうでもない[0],わかりずらい[2])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[Spring-MVC/ステップ・バイ・ステップ]]
2008/04/15からのアクセス回数 &counter;
#contents
Springの特徴は、なんと言ってもBean定義でAOPを使ってBeanの...
AOPは以下のような場合に有効です。
- OOPでは対応できない複数のルートクラスに跨る共通の処理を...
- ソースファイルの存在しない市販パッケージに別の機能を組...
- 宣言的トランザクションのように特定の処理を適応する箇所...
** AOPの用語の説明 [#o8eec54f]
AOPでは、聞き慣れない用語がたくさん出てきます。
ここでは、それらを簡潔に説明し、SpringでのAOPの特徴につい...
*** Aspect [#o51c30c3]
Aspectとは、adviceとjoinpointの組み合わせを指定するモジュ...
*** Advice [#t2a184d0]
Adviceとは、pointcutによって指定されたjoinpointのどのタイ...
行うかを定義したものです。
*** Joinpoint [#m8175767]
Joinpointとは、プログラムの実行時にAdviceの割り込ませるこ...
*** Pointcut [#h8425eec]
Pointcutでは、adviceを適応するjoinpointの条件を指定します。
*** SpringでのAOPの特徴 [#b7ec72e7]
pringのAOPは、プロキシーを使ってメソッドへの呼び出しを横...
従って、Springでは、fieldにはAspectを適応できません。
Spring でサポートされている adivceの種類を以下に示します。
| adivceの種類 | インタフェース | 適応箇所 |
| Before | org.springframework.aop.BeforeAdvice | メソッ...
| After-returing | org.springframework.aop.AfterReturning...
| After-throwing | org.springframework.aop.ThrowsAdvice |...
| Around | org.aopalliance.intercept.MethodInterceptor | ...
| Introduction | org.springframework.aop.IntroductionInte...
** ログ出力のAdvice [#p9989823]
各メソッドの入り口と出口でログを出力するAOPを例にSpringの...
最初に各メソッドの呼び出し前とリターン直前にログを出力す...
*** EnterMethodLogAdvice [#de89046f]
メソッド呼び出し前の Advice(Before Advice)は、 インタフェ...
EnterMethodLogAdviceは、以下のようになります。
#pre{{
public void before(Method method, Object[] args, Object ...
throws Throwable {
System.out.print("enter " + method.getName() + " args=(...
if (args != null) {
for (int i = 0; i < args.length; i++) {
if (i != 0)
System.out.print(", ");
System.out.print(args[i]);
}
System.out.println(")");
}
}
}}
Bean定義は、
#pre{{
<bean id="enterMethodLogAdvice" class="org.springframewo...
}}
とします。
*** LeaveMethodLogAdvice [#s4e4f28d]
同様に、メソッドリターン直前の Advice(After Advice)は、 ...
LeaveMethodLogAdviceのソースを以下に示します。EnterMethod...
#pre{{
public void afterReturning(Object returnValue, Method me...
Object[] args, Object target) throws Throwable {
System.out.println("leave " + method.getName() + " retu...
+ (returnValue != null ? returnValue : "null"));
}
}}
Bean定義は、
#pre{{
<bean id="leaveMethodLogAdvice" class="org.springframewo...
}}
とします。
** Pointcut [#ta87f751]
Springでは、Pointcutを正規表現で指定するJdkRegexpMethodPo...
これを使ってfindがメソッド名に付くメソッドにpointcutを
定義すると以下のようになります。
#pre{{
<bean id="logPointcut" class="org.springframework.aop.su...
<property name="pattern" value=".*find.*"/>
</bean>
}}
** Advisor [#qf6bbc80]
logEnterAdvisorとlogLeaveAdvisorは、adviceとpointcutを指...
#pre{{
<bean id="logEnterAdvisor" class="org.springframework.ao...
<property name="advice" ref="enterMethodLogAdvice"/>
<property name="pointcut" ref="logPointcut"/>
</bean>
<bean id="logLeaveAdvisor" class="org.springframework.ao...
<property name="advice" ref="leaveMethodLogAdvice"/>
<property name="pointcut" ref="logPointcut"/>
</bean>
}}
** DefaultAdvisorAutoProxyCreatorの定義 [#q49c657c]
最後にDefaultAdvisorAutoProxyCreatorをBean定義に追加し、...
#pre{{
<bean class="org.springframework.aop.framework.autoproxy...
}}
#ref(applicationContext.xml);
** 実行 [#o0251524]
ブラウザーで実行すると、findAllメソッドの前後でenterとlea...
#pre{{
enter findAll args=()
leave findAll return=[org.springframework.showcase.coverc...
org.springframework.showcase.coverc.domain.Recipe@6d50ae,
org.springframework.showcase.coverc.domain.Recipe@cbf
}}
** コメント [#l056f56b]
この記事は、
#vote(おもしろかった[10],そうでもない[0],わかりずらい[2])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc