java

書籍「Spring3入門」を献本頂きました

Spring3入門 ――Javaフレームワーク・より良い設計とアーキテクチャ作者: 長谷川裕一,大野渉,土岐孝平出版社/メーカー: 技術評論社発売日: 2012/11/02メディア: 大型本購入: 8人 クリック: 115回この商品を含むブログ (15件) を見る11/2発売なので、すでに入…

Spring Framework Advent Calendar 2011 終了のお知らせ

12日間やってきました*1が、ネタ的にも時間的にも限界が来ました。毎日続けるというのは、想像以上に大変なことですね。 *1:1日落としてますが...

Spring Framework Advent Calendar 2011 part.12 JSR-330 への対応

Spring Framework Advent Calender の 12 日目です。昨日に引き続き、アノテーションについての整理をしていきます。 JSR-330 Dependency Injection for Java JSR-330 は、いわゆる DI の標準仕様を定めるものです。Bob Lee (Guice 作者) と Rod Johnson (Sp…

Spring Framework Advent Calendar 2011 part.11 @Autowired, @Resource, @Qualifier

Spring Framework Advent Calender の 11 日目です。今日は、アノテーションベースでの DI を行うときに頻出のアノテーションとなる @Autowired, @Resource, @Qualifier について整理してみます。 @Autowired @Resource 出自 Spring 独自 JSR250 記述できる…

Spring Framework Advent Calendar 2011 part.10 英語圏の情報にアクセスする

Spring Framework Advent Calender の 10 日目です。今日は、機能紹介から少し離れて、Spring Framework に関する情報の集め方について整理してみます。 これは自分の所感なのですが、Spring 3.0 が登場する前あたりから、Spring の日本語情報がだんだん少な…

Spring Framework Advent Calendar 2011 part.9

coming soon...

Spring Framework Advent Calendar 2011 part.8 - Spring MVC で String 配列にカンマ入り文字列を渡すと分割されてしまう問題

Spring framework Advent Calender 8 日目です。本日は Spring MVC に戻って、配列型のチェックボックスにまつわる話題です。こんな画面を想像してください。よくある Web の入力フォームです。チェックボックスの部分に注目してください。この部分は、対応…

Spring Framework Advent Calendar 2011 part.7 - Spring Security で認証成功時に条件によって遷移先を変える

Spring Framework Advent Calendar の 7 日目です。今日はふたたび Spring Security の話です。小出しにしているような感もありますが、気にせずいきましょう。 以前 Spring Security でアカウントロック機構を実現する - 倖せの迷う森 にて、Spring Securit…

Spring Framework Advent Calendar 2011 part.6 - 同一リクエスト内で同じ値を返す Date の実装

Spring Framework Advent Calendar の 6 日目です。本日は夜に更新時間が取れないため、前倒しでの投稿です。内容も簡易版となっております。さて、時間もあまりないので単刀直入にいきます。同一リクエスト内で同じ値を返す実装と云うのは、つまりこういう…

Spring Framework Advent Calendar 2011 part.5 - Spring Security でセッションタイムアウト時の遷移先をカスタマイズする

Spring Framework Advent Calendar の 5 日目です。今日は Spring Security の話です。なんだか Spring MVC と Spring Security の話ばかりしているような気がしますが、あまり気にしないことにします。 セッションタイムアウト時の画面遷移 ログインが必要…

Spring Framework Advent Calendar 2011 part.4 - Spring MVC 3.1 で導入される Flash Scope

Spring Framework Advent Calendar の 4 日目です。今日は Spring MVC 3.1 の新機能について触れようと思います。 Spring MVC 3.1 では、@MVC*1 関連の機能がさらに強化されています。そのうちのひとつである Flash Scope について紹介します。なお、本記事…

Spring Framework Advent Calendar 2011 part.3 - Spring Security で LDAP 認証を行う

Spring Framework Advent Calendar の 3 日目です。早くもネタが尽きてきました。本日も Spring Security ネタです。業務アプリケーションにおけるユーザー認証で圧倒的に多いのは、DB接続を用いた認証でしょう。Spring Security はもちろん、ユーザーDBと認…

Spring Framework Advent Calendar 2011 part.2 - Spring Security の FilterChainProxy を使って ServletFilter の設定を Spring に移管する

Spring Framework Advent Calendar の 2 日目です。本日は FilterChainProxy についてです。Spring Framework を使っていると、協調する各プロダクトの設定ファイルを Spring の設定ファイルに統合したくなることでしょう。今回は、いつも web.xml に記述し…

Spring Framework Advent Calendar 2011 part.1 - Spring MVC で JSR-303 Validator を使う

前書き どうも、Java 界のぼっちこと max747 です。 さて 12 月といえば Advent Calendar の時期でございます。各種コミュニティで Advent Calendar の企画が立ち上がっておりますが、私はそれらを遠巻きに眺めつつ Spring Framework の Advent Calendar を…

Spring Security でアカウントロック機構を実現する

アカウントロック機構は、パスワード認証をともなうWebアプリケーションの開発ではしばしばセキュリティ要件として盛り込まれることがあります。また、Webサービスのユーザーとしても馴染みのある機能のひとつでしょう。今日は、この機能を Spring Security …

MessageSource のメッセージから、プレースホルダーで別のプロパティを参照する

Spring の MessageSource は、メッセージ内に「{0}は必須項目です」のように { } 記号でプレースホルダーを置いておき、メッセージ取得時に動的に値を埋め込むことができます。こういった機能は Struts 以降の Web フレームワークには標準的に搭載されている…

SpringFramework のアノテーションで List や Map に外部から値を注入する

Spring の Bean に、 List や Set, Map の値を外部から注入したいという状況はしばしば発生すると思います。典型的なパターンのサンプルコードは以下のようなものでしょう。 public class SampleBean { private List<String> fruitsList; // ここに注入したい public</string>…

SpringFramework で特定の Bean のみ再読み込みする

以下のような Service クラスがあるとします。Dao へのアクセスは大変コストがかかるため、Bean の初期化時に afterPropertiesSet メソッド内で1度だけアクセスし、その結果を Map に保持するような仕掛けになっています。 @Service public class FooService…

JUnitでプラットフォーム依存のテストを行う

JUnitでプラットフォーム依存のテストを行いたい*1とき、みなさんはどうされているのでしょうか。テストメソッド内で System.getProperty("os.name") 等としてOS判定し、実行する処理を分岐させたりしているのでしょうか。 こんな感じで、アノテーションで実…

iText で大量の PDF をマージする

Java コードから PDF を取り扱う際には iText が便利で、Java が公用語の皆様はよく利用されていることでしょう。 PDF を結合して新たな PDF を作るには PdfCopy を利用するのが簡単です。しかし、大量の PDF を結合していくと、すぐに OutOfMemoryError が…

Spring MVC 3 のアノテーションスタイルで、複数の Submit ボタンがあるフォームに対応する

このようなフォームがあったとします。 <form action="/add/confirm" method="post"> <p><input type="text" name="name" /></p> <p><input type="text" name="age" /></p> <p> <input type="submit" name="confirm" value="確認" /> <input type="submit" name="back" value="戻る" /> </p> </form> これに対応する Controller のアノテーションは以下になります。params …

ジェネリクスがらみで各種 Java コンパイラーの挙動が異なる件

自分でもまだエラーの原因を特定できていないので、とりあえずメモレベル。 import java.util.ArrayList; import java.util.List; public class Foo {} class X<T extends X<T>> {} class Y<T extends X<T>> {} class Fuga { <T extends X<T>> void foo(Y<T> y) {} void main() { List<Y<? extends X<?>>> list = new ArrayList<Y<? extends X<?></y<?></y<?></t></t></t></t>…

同じ型どうしのオブジェクトのプロパティを比較する

オブジェクトのプロパティを比較して、異なるプロパティの値だけを取り出す処理が必要になったのですが、せっかくなので汎用的な形として実装してみました。 commons-lang と SpringFramework を使用しています。頑張れば標準ライブラリでもできるのでしょう…

アノテーション使用時に SpringFramework がデフォルトで設定するコンポーネント名をカスタマイズする

SpringFramework も、アノテーションを使用してBean定義を行う案件がだいぶ定着してきたように思います。そんな中で、 interface を FooBarBaz を定義して、それを implement するクラスを FooBarBazImpl という名前で作りなさい そのとき、コンポーネント名…

SpringFramework と Velocity の統合

SpringFramework 上のコンポーネントとして Velocity を使いたいという状況は、割とよくあるのではないかなと思っています。プレゼンテーション層に Velocity を採用するパターンもありますが、アプリケーションから定型のメールを送信するケースなどでも、…

iBATIS の TypeHandlerCallback で getter.wasNull() するときの注意点など

iBATIS*1には、データベース型とエンティティの型を独自にカスタムしたい場合、いわゆるJDBCの自然なマッピングではない型を使用したいというニーズのために TypeHandler の拡張ポイントである TypeHandlerCallback を提供しています。特定のJava型*2にDBの…

hamcrest の Matcher を独自拡張 - java.util.Date 版 closeTo

テスト対象クラスの内部で new Date() しているようなコードをテストする場合、テストクラス側で new Date() した値とはミリ秒程度の誤差が出てしまうことがあります。 hamcrest の Matcher で、double の誤差を許容するためのメソッド closeTo があります。…

配列を分割する(Generics版) ※追記あり

配列を指定サイズで分割したい! なんてシチュエーションは少ないかもしれませんが、そんな数少ないシチュエーションに先日遭遇しました。 自分が必要としたのは String[] の分割処理だったのですが、せっかくですので、汎用版を作ってみました。 package ut…

Spring Framework 3.0-M3 をビルドする

やたら時間がかかったり、OutOfMemory したりと悲しい思いを何度もしたので、せめて同じ悲劇が繰り返されないようにと Web 上に記録を残します。 事前準備 ant をインストールして、コマンドラインから使えるように PATH を通しておく。 環境変数 ANT_OPTS …

スコープの短いコンポーネントの取得

暇つぶしネタ。 S2 などの DI コンテナを使っていると、sintleton コンポーネントから prototype などの、よりスコープの短いコンポーネントを取得したいケースがあります。 この場合、単純に DI するだけではうまくいきません。 public interface BarServic…