然而仅仅使用注解去声明一个环境条目是没意义的,因为注解是应用代码的一部分。因此你应使用部署描述符去插入一个值。
maxTradesAllowedPerUser
java.lang.Integer
15
maxTradesAllowedPerUser
使用邮件资源
你可以使用Resouce注解去插入一个邮件会话的实例。首先,在应用服务器上你应配置一个邮件资源﹔然后你就可以使用Resource注解向你的应用程序插入一个邮件会话。
@Resource(name="mail/Adventure ")
private javax.mail.Session ms;
EJB上下文(EJBContext)
你可以像下面那样,使用Resource注解去插入SessionContext和MessageDrivenContext:
@Resource javax.ejb.TimerService ts;
时间服务(TimeService)
TimeService使EJB组件可以访问容器的时间服务,并且允许在EJB应用中安排任务和活动计划。你可以像下面那样使用Resource注解向一个EJB插入时间服务:
@Resource javax.ejb.TimerService ts;
通过javax.annotation.Resource使用多种资源
如果你想在你的应用程序使用多种资源,请像下面那样使用javax.annotation.Resource:
@Resources ({
@Resource(name="jdbc/AdventureDB" type=javax.sql.DataSource),
@Resource(name="jms/wfmQCF" type=javax.jms.QueueConnectionFactory)})
EJB中使用依赖注入
在J2EE 1.4中,EJB是非常復杂的,并且它还继承一些JNDI的繁杂性。在EJB3.0中,通过使用javax.ejb.EJB注解或ejb-ref部署描述符元素声明对另一个会话Bean的依赖是非常方便的。下面就是javax.ejb.EJB注解的声明:
@Target({TYPE,METHOD,FIELD})
@Retention(RUNTIME)
public @interface EJB {
String name() default "";
String beanName() default "";
String mappedName() default "";
String description() default "";
Class beanInterface() default Object.class;
}
下表列出javax.annotation.EJB的参数:
如果你想使用一个名为ProcessManager的EJB,你可以使用依赖解去获得ProcessManager的实例并调用它的方法:
@EJB(name="ProcessManager")
private ProcessManager pm;
pm.submitOrder(order);
这里,name是一个被插入的JNDI名称。当一个EJB被用作类时,并且没有办法知道组件将使用那一个执接口时,必须指定interface。如果这个Bean与另一个Bean使用的相同的接口,那麼要用beanName去消除岐义。
通过依赖註入使用Web Service
在J2EE 中开发和调用Web Services是非常復杂的。通过运用web services Metadata(JSR-181)和Java API for XML web service 2.0(JSR-224),Java EE5.0简化了基於XML的web services的开发及调用。你可以使用javax.xml.ws.webServiceRef注解为web services声明依赖或註入。
下表列出可以在WebServiceRef注解中使用的参数。
下面是一个WebService注解的例子,它的类型取值和名称从被插入的对象中继承:
@WebServiceRef原文链接:https://www.f2er.com/javaschema/288204.html
public PurchaSEOrderService poService;
使用依赖註入的好处和限制
效果
依赖註入可以使得资源和服务更易被使用,因为你不必处理JNDI的復杂性。你不必去写几百行的代码或去写服务定位器模板。
Java
EE既支持使用XML的依赖註入也支持注解的依赖註入,如果你觉得注解更有意思你可以使用注解。注解可以使你的代码更具可读性且更简练,但这并不意味著它
使你生活更舒适,因为它会导至代码维护问题,这主要是因为方法所需求的引用资源是硬编码到应用程序中的。好的消息是你可以用XML元素去改写注解。
限制
因为Java EE 5.0只支持受管对象的依赖註入,所以你不可以在助手类中使用依赖注入,在助手类中如果你想使用资源或服务仍然必须使用JNDI。
总结
依
赖註入大简化了JNDI的復杂性,使得开发企业应用程序更容易。你可以亲自试试注解如何使得使用资源和服务变得更容易:可以在Oracle的
Application Server 10g 10.1.3和JBoss
4.0.x作练习,他们在EJB容器中都对EJB3.0和依赖註入提供较早的支持。
相关资源
Matrix Java社区:http://www.matrix.org.cnOTN EJB 3.0 Resource Center Java EE 5.0 Early Release draft specification (JSR 244) Common Metadata annotations for Java Platform Proposed Final Draft specification (JSR 250) EJB 3.0 Public Draft specification (JSR 220) Java API for XML web services 2.0 Proposed Final Draft specification (JSR 224)