Status Code 303 - See Other

サーバサイド、iOS・アンドロイドアプリ、インフラレベルの話まで幅広くやってます。情報の誤りや指摘・意見などは自由にどうぞ。

Seasar2 (導入編)

概要

今回は、DI コンテナという少し特殊な技術を用いる。
この技術を使うと、プログラムをコンパイルせずに、プログラム外部にあるリソースファイルを使いプログラムの挙動を制御できる。
また、デザインパターンで言う Factory や Singleton パターンを容易に実装できるため、
オブジェクトのライフサイクルに気を取られず、どのようなクラスを作成するかに注力できるようになる。

DI って?

プログラミングのスタイルとして、まずインタフェースを決定し、その後詳細を実装していくスタイルがある。
このスタイルは、インタフェースでコンポーネントの仕様を決め、それぞれの仕様に従ったクラスを実装するという
流れでプログラミングを行うため、各コンポーネントが互いに依存しない(疎な)コンポーネント群になりやすい。

そして、この考えを発展させたものとして DI (Dependency Injection) という設計パターンがある。
これは、それぞれのコンポーネント間が疎になることにより、コンポーネントを自由に取り替えることができるようになる。
そのため、どのコンポーネントを使うかをプログラム内で記述するのではなく、外部リソースを使って決定させるようにする。
これによって、外部リソースを変更するだけで、プログラムをコンパイルし直さなくても、プログラムの挙動を変えることができる。

これによって、以下の利点が生まれる。

  • コンポーネントの再利用促進
  • オブジェクト使用コードとオブジェクト生成コードの分離
  • テスト単純化
  • 保守性向上

今回用いる DI コンテナ

Java では、有名なものには Spring DI, Dagger, Google Guice などがあるらしいが、
参考:Dependency Injection Options For Java | Keyhole Software
今回は Seasar2 を使う。(Seasar2 - Seasar2)

Seasar2 は、世界的に見るとシェアは低く、新規機能開発も現時点では終了している(バグ改修のみ)ため、
今ある以上のことが今後できる見込みはない。

しかし、

  • 少ない設定で使用できる
  • 専用プラグインが充実している
  • 国産のため日本語文献が多い

といった利点があるため、規模の小さい開発や DI の実践演習としては有効な選択肢になりやすい。
なお、Searsar2 では、DI コンテナ以外にも、DB連携機能、アスペクト指向プログラミングなどの機能も提供している。

導入方法

日本語版の WindowsEclipse (Mars, ver4.5.1)を使用している場合を示す。
(画像は別環境でのスクリーンショットなため、Mac 英語版ですが...)

SeaSar2 用のプラグインの導入

次のプラグインを導入。

Eclipseツールバーより、 [ヘルプ] -> [新規ソフトウェアのインストール...]を選択。
上記テキストボックスの「作業対象」に http://eclipse.seasar.org/updates/3.3/ を追加する。
f:id:kouki_hoshi:20160316201117p:plain
そして、以上から、Dolteng, Kijimuna, SAStruts Plugin, Resource Synchronizer をインストールする。

なお、SAStruts Plugin のインストールがうまくいかなかった場合(私はなんかエラーが出た...)
http://download.eclipse.org/releases/mars/"Eclipse のバージョンによってURL 変える感じ。
を対象に入れて、「Web, XML, Java EE and OSGi Enterprise Development」をインストールすると、
SAStruts Plugin もインストールできた。
参考:SAStrutsPlugin がインストールできない場合の対応方法 - KusoBoze is here.

次に、作業対象に「http://eclipse.seasar.org/updates/3.2/」を追加する。
そして、DbLauncher をインストールする。
f:id:kouki_hoshi:20160316201124p:plain

ライブラリ追加

あとは、Seasar2 - Downloads にアクセスして、
S2Tiger は便利な拡張機能があるので、入れておいた方が良さそう。
また、DBを使うなら S2JDBC-GEN も入れた方が良い。
f:id:kouki_hoshi:20160316201130p:plain
インストール方法:Seasar - DI Container with AOP -

これで導入フェーズは終了。
次回からはサンプルの構築に移る予定。

参考文献

Seasar2徹底入門 SAStruts/S2JDBC対応

Seasar2徹底入門 SAStruts/S2JDBC対応