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入門」に戻る