Han*_*ank 7 dependency-injection java-ee java-ee-6
我试图找出,可以通过@Resource
注释注入无状态会话Bean.我在哪里可以找到一份清单?它取决于容器(在我的例子中是Glassfish 3.1.1)吗?
Vin*_*lds 12
JSR-250(Java平台的通用注释)解决了使用@Resource
注释处理类时容器的运行时行为; 相关部分是2.3,其中讨论了@Resource
注释.
总的来说,任何资源,可以在部署描述符的存在env-entry
,service-ref
,resource-ref
,message-destination-ref
或resource-env-ref
可与注解@Resource
注释注射.可以将实例注入受支持的类的特定Java类型列表也在同一部分中指定,并在下面复制:
Java Type Equivalent Resource type java.lang.String env-entry java.lang.Character env-entry java.lang.Integer env-entry java.lang.Boolean env-entry java.lang.Double env-entry java.lang.Byte env-entry java.lang.Short env-entry java.lang.Long env-entry java.lang.Float env-entry javax.xml.rpc.Service service-ref javax.xml.ws.Service service-ref javax.jws.WebService service-ref javax.sql.DataSource resource-ref javax.jms.ConnectionFactory resource-ref javax.jms.QueueConnectionFactory resource-ref javax.jms.TopicConnectionFactory resource-ref javax.mail.Session resource-ref java.net.URL resource-ref javax.resource.cci.ConnectionFactory resource-ref org.omg.CORBA_2_3.ORB resource-ref any other connection factory defined by a resource adapter resource-ref javax.jms.Queue message-destination-ref javax.jms.Topic message-destination-ref javax.resource.cci.InteractionSpec resource-env-ref javax.transaction.UserTransaction resource-env-ref Everything else resource-env-ref
请注意表中的最后一项 - 根据规范,可以注入JNDI目录中存在的与资源关联的任何受管对象.
可以从Java EE 6平台规范的第5章获得这些类的实例列表,其实例必须由容器注入.这不是以任何形式列表的,但是,本章还指定了应用程序开发人员必须如何请求注入任何重要资源.本章中列出的大多数资源都是通过指定注释或明确用于该资源的另一个注释来注入的.@Resource
对于EJB容器特定的资源,EJB 3.1规范可以重复前面提到的平台规范第5章的内容.相关细节见第16章"企业Bean环境",相关细节出现在标题为"Bean Provider的职责"的小节中.
关于Servlet 3.0规范,相关细节可以在第15.5.4节中找到,它讨论@Resource
了servlet容器的注释语义.