これから、Springというフレームワークを利用しようと考えている人は、「DI」という言葉を聞くことになるではないでしょうか。

 

まず、DIとは「Dependency Injection」の略称で、「依存性の注入」という意味になります。

DIという言葉を初めて聞く人にとってはサッパリだと思います。

ここでいう「依存性の注入」とは、「依存しているオブジェクトをプログラムの実行時に、外部から注入する」ということです。

 

Javaに限らずプログラムの経験がある人ならば、以下のような思いをされたことがあるのではないでしょうか?

 

  • 機能拡張(追加/削除など)したいが容易ではない。

 

そういった場合に、この機能を活用することで簡単に行うことができます。

その結果、作業の効率化/工数短縮を図ることができます。

 

実際には、外部の設定ファイルにオブジェクト定義を設定すれば、「DIコンテナ」がインスタンスの注入をしてくれるため、機能拡張をしたい場合でも、比較的簡単に行うことができます。

また、テストを行う際もモックオブジェクトを作成して、設定ファイルを書き換えることで、実施したいテストを容易に行うことができます。

 

しかし、気を付けなければいけない点もあります。

まず、インターフェイスを理解し、正しい設計をしないと折角の利点がなくなってしまいます。

依存するオブジェクトなどの設定を外部の設定ファイルに定義するため、コンパイルエラーが発生しません。

そのため、実際にプログラムを実行した際に初めてミスに気づくということもあります。

 

いろいろ述べましたが、実際にさわってみるのが一番です。

はじめると意外と簡単にできてしまうかもしれませんよ。

Springの宣言的トランザクション管理では、アノテーション(@Transactional)や

設定ファイルでトランザクションを制御することができます。

 

プログラム中に制御コードを記述する必要がないため、

トランザクション管理が比較的容易になります。

 

しかし、トランザクション制御を行うメソッドについては、以下を考慮する必要があります。

・publicメソッドであること

・外部クラスから利用される(呼出される)こと

 

これは、宣言的トランザクション管理が「Spring AOP」によって実現されていることに依拠します。

Spring AOPによってメソッド呼出しの前後にトランザクション制御の織り込みが行われるためです。

(※ 詳細については、Springの公式リファレンスを参照してください。)

 

 

今回紹介した宣言的トランザクション以外にも、多様な機能がSpringでは提供されています。

時には、問題解決の突破口に成り得るかもしれません。

 

一度、Spring Frameworkにふれてみてはいかがでしょうか。