Spring

日本語Struts2本が発売になります

毎日コミュニケーションズ社から本サイト関連のStruts2と各コンポーネントの日本語の本が出版されることになりました。Struts2 フルスタック化&Webアプリケーション開発 ~Struts2+Spring 2+Tiles+iBATIS+GWTで作るショッピングサイト~作者: 三国逸文出版社/…

iBATIS2.3.2のバグ

Springのwith dependencyパッケージは関連するJarが含まれていて便利だが、Spring2.5.5付属のiBATISは2.3.2となっていて、このバージョンには副問い合わせでのバグがある。 副問い合わせ指定のSQLを実行すると次のようなエラーが出力されてしまう。 javax.se…

Struts2アクションのスコープ

Struts2のアクションをSpringでBean生成させるときに以前 "request"スコープを使用していた(Struts2のAction専用のスキャン用Annotationを作る - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク)が、s:actio…

Springが2.5.2になってました

http://www.springframework.org/downloadで落とせます 2月末にリリースされてたみたい。http://static.springframework.org/spring/docs/2.5.x/changelog.txtあまり使ってた部分で変更はなさそう。 とりあえず入れ替えときます。

LegacyなSingletonの取り込み

既存のコードで getInstance などのメソッドを呼んでSingleton を取得するタイプのクラスで、それをSpringのBeanとして管理下に置きたい場合は次のようにすることで実現できた。これでLegacyなSingletonも他のBeanにDIすることが出来るようになる。 package …

Struts2-GWTインテグレーション

GWTの単体での使い方、GWTでのRPC(AJAX)発行は問題無いことがわかった。で、フレームワークへのGWTの取り込み方法として、次の方式とする。基本的にはクライアント側では既存のフォーム要素とGWTの要素は関連性を持たせず、GWTはGWTの世界でフレームワーク…

重複したBean名

Annotationベースの場合に不注意で重複したBean名を付けてしまう可能性が高まるが、その場合にどうなるか確認した。Annotationで重複した名前を使った場合に、初期化時にエラーになる。 applicationContext.xml で重複した名前の場合も、初期化時にエラーに…

Struts2のAction専用のスキャン用Annotationを作る

context:component-scanを設定するとSpringがAnnotationをスキャンしてBean生成を行うが、Struts2用のアクションであることが明示された方が後々都合がいいかもしれないので、専用のステレオタイプAnnotationを作っておく。 こうしておけば、例えばStruts2の…

Struts2のアクションもAnnotationでbean生成する

ActionへのDependency Injectionだけを行うつもりだったが、考えるとActionは単純にBean生成だけをapplicationContext.xmlに書くことになる。単純な作業になってしまうので、Action Beanの生成もAnnotationにお願いするようにするSpringのapplicationContext…

Spring2.5の@Reourceアノテーションを使ってみる

Springの applicationContext.xml の最初の部分を2.5用に次のように変更

Springを2.0から2.5に変更する

@Resourceアノテーションを使いたいためにSpringを2.0から最新の2.5.1に、JDKを1.5.0から1.6.0に変更する。 Spring2.5は大幅なパフォーマンスアップをしているらしいのと、2.0と完全互換を謳っているのでそろそろ移行しておいて損は無いとみた。http://journ…

ScopeInterceptorでSpringのbeanをsessionに保持

ApplicationContextの取得が出来るということは、そこからSpringのbeanを取得してあげれば、Spring管理下のBeanをScopeInterceptorで保持できると考えた。ScopeInterceptorで保持することの利点は、オブジェクト毎に簡単に破棄が出来る事。Springのsessionの…

Struts2のアクションでSpringのApplicationContextの参照

Struts2のAction自体がSpringで生成されappplicaiotnContext.xmlに従い勝手に依存性の注入(Dependency Injection)をしてくれるので、Action中でSpringのApplicationContextを明示的に取得したい場面は少ないと思うが、次のようにして参照することができる…

Springでsessionスコープのオブジェクト

sessionやapplicationスコープのオブジェクトはSpringでも簡単に管理できる。 例えば、 applicationContext.xmlで次のように scopeで sessionを指定するだけ。 <bean id="sessionobj" class="tutorial.SessionObj" scope="session" init-method="init"> </bean> そして、参照したいActionにDIしてあげれば良い <bean id="UserAction" class="tutorial.UserAction" scope="request"> </bean>

FileUploadの為のAction

Uploadされると、FileUploadInterceptorによって ファイルは一時ファイルとして保存される MIME型、サイズがチェックされパスした要素についてパラメータ設定 各file型のフィールドについて次のパラメータを追加 パラメータ名 データ型 備考 フィールド名 ja…

Spring側のStrutsアクション生成

特に特別なことは無いが、UserActionのスコープを "request" とすることぐらい Springのbean名をstruts.xmlで指定しているクラス名に一致させればアクションをSpringで生成してくれる また、Springから初期化されるのでコンストラクタ引数を指定することもで…

設定ファイルの場所

TestNGのテスト実行とWEBアプリケーションの実行双方であまり設定などをいじらずに共用したいが、今までの置き場所だとTestNGでのテスト時に設定が読めなかったので場所を調整。 WEB-INF/ classes/ applicationContext.xml -- spring設定 sqlMapConfig.xml -…

関連システムJar一覧

今の /WEB-INF/lib 下の Jar は次のとおり acegi-security-1.0.5.jar acegi-security-catalina-1.0.5.jar acegi-security-tiger-1.0.5.jar aspectjrt.jar aspectjweaver.jar cglib-nodep-2.1_3.jar commons-beanutils-1.7.0.jar commons-collections-3.1.jar…

BeanのProxy作成で問題

Acegiの@Securedアノテーションを処理するために、SpringでStruts2のアクションBeanのProxyを作成し、Acegiの認可チェックInterceptorでチェックをさせようと考えていたが、Proxyを作成するとProxy側では基のクラスのAnnotation情報が欠落してしてまい、Stru…

SpringでTestNG 2

webアプリケーション用の applicationContext.xml を使って単体テストしようとすると "request"や"session"のスコープが無いって怒られて読み込めない問題発生。 ちょっと他の方法が見つからなかったので仕方なくSpringのスコープカスタマイズ機能を利用し自…

SpringでTestNGを使う

SpringではデフォルトのサポートはJUnitであり、 spring-mock.jar に含まれている org.springframework.test.AbstractDependencyInjectionSpringContextTests などのヘルパクラスはJUnitに依存しているため使用できない。 TestNGに付属している spring の下…

Acegiのフィルター設定

認証、認可チェックはStruts側でやるのでAcegiでやるのは コンテキストをHTTPリクエストをまたいで有効にするための処理と、未ログイン時はAnonymousユーザーで認証されているようにするフィルター ※認証、認可をStruts側でやる意味は例外処理とか統一的にSt…

iBatisでデバッグ中のSQL変更

デバッグ中はSQLを頻繁に変更するけど、アプリケーションを再起動しないと変更が反映されない、これはつらい。 そこで、毎回読み直してくれる設定に強引にするまず Spring の applicationContext.xml で iBatis と dao を sigleton ではなく prototype にする

AcegiでのAnnotation ベースのメソッドセキュリティ設定

applicationContext.xml に次の設定を追加