Dependency Injection(DI)とは,ターゲットクラスのフィールドやsetメソッドにアノテーション(@EJBや@Resource)を設定することで,EJBやリソースへの参照をEJBコンテナが自動的にセットする機能です。
EJBコンテナ上で動作するクラスの中で,ターゲットクラスとなるクラスを次に示します。
また,Webコンテナ上で動作するクラスの中で,ターゲットクラスとなるクラスを次に示します。
Enterprise Beanのホームインタフェース,またはビジネスインタフェースへの参照をDIする場合は,@EJBを設定します。
@Resourceを設定した場合は,表10-4に示すリソースのタイプをDIできます。
表10-4 @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リソース | ○ |
管理対象オブジェクトの独自のインタフェース | ○ |