AOPの利用 (6/6)
作成:2015-07-12 13:30
更新:2015-07-12 13:33
更新:2015-07-12 13:33
■アノテーションでAOP設定クラスを作る
これで、基本はわかりました。今度は、bean.xmlをクラスに書き換えてみましょう。Spring Frameworkでは、Bean設定ファイルを使わず、設定のためのクラスで同じことができましたね。
では、com.tuyano.libro.aopパッケージに、「SampleAopConfig」というクラスを作成しましょう。そして、下のリスト欄のようにソースコードを記述して下さい。
作成したら、bean.xmlからSampleAopConfigクラスを使うようにAppクラスのコードを修正しましょう。以下の一文を書き換えて下さい。
※Appの修正
これでAppを実行すると、先ほどと同じように出力がされます。bean.xmlに記述されていたのとまったく同じBeanがSampleAopConfigから取得できるようになっていることがわかります。
ここでは、@Configurationアノテーションを付けてSampleAopConfigクラスを宣言し、Beanインスタンスを返すメソッドに@Beanアノテーションを付けてBeanが取得されるようにしています。注目は、SampleMethodAdviceインスタンスを作成しているsampleMethodAdviceメソッドです。インスタンス作成後に、以下のようにして必要なプロパティを設定しています。
では、com.tuyano.libro.aopパッケージに、「SampleAopConfig」というクラスを作成しましょう。そして、下のリスト欄のようにソースコードを記述して下さい。
作成したら、bean.xmlからSampleAopConfigクラスを使うようにAppクラスのコードを修正しましょう。以下の一文を書き換えて下さい。
※Appの修正
ApplicationContext app = new ClassPathXmlApplicationContext("bean.xml");↓
ApplicationContext app =
new AnnotationConfigApplicationContext(SampleAopConfig.class);
これでAppを実行すると、先ほどと同じように出力がされます。bean.xmlに記述されていたのとまったく同じBeanがSampleAopConfigから取得できるようになっていることがわかります。
ここでは、@Configurationアノテーションを付けてSampleAopConfigクラスを宣言し、Beanインスタンスを返すメソッドに@Beanアノテーションを付けてBeanが取得されるようにしています。注目は、SampleMethodAdviceインスタンスを作成しているsampleMethodAdviceメソッドです。インスタンス作成後に、以下のようにして必要なプロパティを設定しています。
bean.setTarget(sampleAopBean);この「setTarget」と「setInterceptorNames」が、先にbean.xmlで記述してあった<property name="target">と<property name="interceptorNames">に相当する処理、というわけです。
bean.setInterceptorNames("sampleMethodAdvice");
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro.aop; import org.springframework.aop.framework.ProxyFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SampleAopConfig { private SampleAopBean sampleAopBean = new SampleAopBean("this is message bean."); private SampleMethodAdvice sampleMethodAdvice = new SampleMethodAdvice(); @Bean SampleAopBean sampleAopBean() { return sampleAopBean; } @Bean SampleMethodAdvice sampleMethodAdvice() { return sampleMethodAdvice; } @Bean ProxyFactoryBean proxyFactoryBean() { ProxyFactoryBean bean = new ProxyFactoryBean(); bean.setTarget(sampleAopBean); bean.setInterceptorNames("sampleMethodAdvice"); return bean; } }
※関連コンテンツ
「初心者のためのSpring Framework入門」に戻る