然而仅仅使用注解去声明一个环境条目是没意义的,因为注解是应用代码的一部分。因此你应使用部署描述符去插入一个值。
maxTradesAllowedPerUser
java.lang.Integer
15
maxTradesAllowedPerUser
@Resource(name="mail/Adventure ")
private javax.mail.Session ms;
EJB上下文(EJBContext)
@Resource javax.ejb.TimerService ts;
@Resource javax.ejb.TimerService ts;
@Resources ({
@Resource(name="jdbc/AdventureDB" type=javax.sql.DataSource),
@Resource(name="jms/wfmQCF" type=javax.jms.QueueConnectionFactory)})
@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;
}
@EJB(name="ProcessManager")
private ProcessManager pm;
pm.submitOrder(order);
@WebServiceRef
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.cn
OTN 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)