2.9 アプリケーションサーバが対応するDependency Injection
Dependency Injection(DI)とは,ターゲットクラスのフィールドやsetメソッドにアノテーション(@EJB,@Resource,@Inject)を設定することで,オブジェクトの参照をJ2EEサーバが自動的にセットする機能です。
EJBコンテナ上で動作するクラスの中で,ターゲットクラスとなるクラスを次に示します。
-
Enterprise Bean
-
インターセプタ
また,Webコンテナ上で動作するクラスの中で,ターゲットクラスとなるクラスを次に示します。
-
サーブレット
-
フィルタ
-
リスナ
-
タグハンドラ
Enterprise Beanのホームインタフェース,またはビジネスインタフェースへの参照をDIする場合は,@EJBを設定します。
@Resourceを設定した場合は,次の表に示すリソースのタイプをDIできます。
リソースのタイプ |
DIの可否※1 |
---|---|
java.lang.String※2 |
× |
java.lang.Character※2 |
× |
java.lang.Integer※2 |
× |
java.lang.Boolean※2 |
× |
java.lang.Double※2 |
× |
java.lang.Byte※2 |
× |
java.lang.Short※2 |
× |
java.lang.Long※2 |
× |
java.lang.Float※2 |
× |
javax.xml.rpc.Service |
× |
javax.xml.ws.Service |
× |
javax.jws.WebService |
× |
javax.sql.DataSource※3 |
○ |
javax.jms.ConnectionFactory |
○ |
javax.jms.QueueConnectionFactory※4 |
○ |
javax.jms.TopicConnectionFactory |
○ |
javax.mail.Session |
○ |
java.net.URL |
× |
javax.resource.cci.ConnectionFactory※5 |
○ |
org.omg.CORBA_2_3.ORB |
○※6 |
javax.jms.Queue※3,※7 |
○ |
javax.jms.Topic※7 |
○ |
javax.resource.cci.InteractionSpec |
× |
javax.transaction.UserTransaction |
○※8 |
javax.ejb.EJBContext |
○※9 |
javax.ejb.SessionContext |
○※9 |
javax.ejb.TimerService |
○※9,※10 |
JavaBeansリソース |
○ |
管理対象オブジェクトの独自のインタフェース |
○ |