- PR -

WebアプリでSpring AOP

1
投稿者投稿内容
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-02-16 18:51
こんにちは。

既存のサーバサイドJavaのWebアプリケーションのあるパターンにマッチしたメソッド
を実行した時にログを出力したいと思っています。

http://www.atmarkit.co.jp/fjava/rensai3/springdi03/springdi03_2.html
を参考にして、WebアプリケーションでSpring AOPの機能を試そうとしてます。
この例ではJavaアプリケーションなので、mainで
コード:
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTest  {
  public static void main(String args[]){
    BeanFactory contxt = (BeanFactory)new ClassPathXmlApplicationContext("applicationContext.xml"); // @
    IHelloWorldBean hello = (IHelloWorldBean)contxt.getBean("helloworld"); // A
    hello.helloworld();
  }
}


のようにやっています。WebアプリでAOPを試そうとしているのですが、
Aの設定はどうやれば良いのでしょうか?
@の設定は以下のようにやりました。
・web.xmlにapplicationContext.xmlの設定
コード:
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>


applicationContext.xml内にAOPとして定義した<bean id="helloworld"....
をWebアプリケーションに設定しなければならないと思うのですが、その方法が
わかる方、是非教えてください。
hiro
常連さん
会議室デビュー日: 2005/03/10
投稿数: 32
投稿日時: 2006-02-17 10:46

http://wiki.bmedianode.com/Spring/?Spring+Framework
を参考にされてはどうでしょう?
「入門記」にAOPに関する情報が細かく掲載されてますよ
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-02-22 16:37
hiroさん、ありがとうございます。
該当箇所を読んでみましたが、いまだ解決できません。
もうちょっと詳しく隅々まで読んでみたいと思います。
hiro
常連さん
会議室デビュー日: 2005/03/10
投稿数: 32
投稿日時: 2006-02-23 14:46
web.xmlに
Listenerを利用する場合
コード:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


ContextLoaderServletを使用する場合
コード:

<servlet>
<servlet-name>contextLoaderServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>contextLoaderServlet</servlet-name>
<url-pattern>/contextLoader</url-pattern>
</servlet-mapping>


を記述してますか?

テストを行うサーブレットには

コード:

public doPost(HttpServletRequest request ・・・・・) {
WebApplicationContext ct = org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
IHelloWorldBean hello = (IHelloWorldBean)ct.getBean("helloworld");
     hello.helloworld();
}



とします(検証してないので動作するかわかりませんが)


[ メッセージ編集済み 編集者: hiro 編集日時 2006-02-23 14:48 ]
koji
常連さん
会議室デビュー日: 2005/07/14
投稿数: 28
投稿日時: 2006-03-02 18:01
hiroさん、ありがとうございました。

解決しました。
Listenerは設定していました。それ以外、特に設定する必要が無いという
事がわかりました。何が間違っていたかと言いますと、ある書籍を参考に
していまして、その本の通りにAround Adviceを実装したらうまくいきま
せんでしたが、Webなどを参考にし、その通りに実装する事によって、う
まくいきました。
applicationContext.xmlの書き方自体もその書籍のサンプルではビルド
エラーが出てましたので、その書籍が間違っている可能性も、極僅かです
があると思います。
1

スキルアップ/キャリアアップ(JOB@IT)