`
bclxz520
  • 浏览: 65994 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

(EJB3.0学习笔记四)依赖注入(dependency injection)

阅读更多
上面,你学到了如何开发藕合松散的服务组件.但是,为了存取那些服务对象,你需要通过服务器的JNDI来查找存根对象(session bean)或消息队列(MDB).JNDI查找是把客户端与实际的服务端实现解藕的关键步骤.但是,直接使用一个字符串来进行JNDI查找并不优雅.有这样几个原因:
・客户端与服务端必须有一致的基于字符串的名字.它没有在编译时得到认证或在布署时得到检查.
・从JNDI返回的服务对象的类型没有在编译时进行检查,有可能在运行时出现转换(casting)错误.
・冗长的查找代码,有着自己的try-catch代码块,在应用之间是重复的和杂乱的
EJB 3.0,对任何POJO,提供了一个简单的和优雅的方法来解藕服务对象和资源.使用@EJB注释,你可以将EJB存根对象注入到任何EJB 3.0容器管理的POJO中.如果注释用在一个属性变量上,容器将会在它被第一次访问之前赋值给它.在Jboss下一版本中@EJB注释从javax.annotation包移到了javax.ejb .
下面的例子演示了怎样把HelloWorldBean无状态session bean的存根注入到InjectionBean类中.
java 代码
 
  1. InjectionBean.java  
  2. package com.foshanshop.ejb3.impl;  
  3. import com.foshanshop.ejb3.HelloWorld;  
  4. import com.foshanshop.ejb3.Injection;  
  5. import javax.annotation.EJB;  
  6. import javax.ejb.Remote;  
  7. import javax.ejb.Stateless;  
  8. @Stateless  
  9. @Remote ({Injection.class})  
  10. public class InjectionBean implements Injection {  
  11. @EJB (beanName="HelloWorldBean")  
  12. HelloWorld helloworld;  
  13. public String SayHello() {  
  14. return helloworld.SayHello("注入者");  
  15. }  
  16. }   

@EJB注释的beanName属性指定EJB的类名(不带包名),他的另一个属性mappedName指定Bean实例的JNDI名.
下面的片断演示了如何使用beanName或mappedName属性查找HelloWorldBean 会话bean
java 代码
 
  1. public class InjectionBean implements Injection {  
  2. @EJB (beanName="HelloWorldBean")  
  3. //@EJB (mappedName="HelloWorldBean/remote")  
  4. HelloWorld helloworld;  
  5. ..   


@EJB注释如果被用在JavaBean风格的setter方法上时,容器会在属性第一次使用之前,自动地用正确的参数调
用bean的setter方法.下面的片断演示了这是如何做的
java 代码
 
  1. public class InjectionBean implements Injection {  
  2. HelloWorld helloworld;  
  3. @EJB (beanName="HelloWorldBean")  
  4. public void setHelloworld(HelloWorld helloworld) {  
  5. this.helloworld = helloworld;  
  6. }  
  7. ..   
分享到:
评论

相关推荐

    EJB3.0 学习笔记

    **EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...

    达内EJB3.0总结

    4. **依赖注入**:EJB3.0支持依赖注入(Dependency Injection,DI),通过`@Inject`或`@EJB`注解,可以方便地实现服务的查找和注入,减少了手动管理对象间依赖的复杂性。 5. **会话Bean的简化**:EJB3.0提供了无...

    ejb3.0_培训笔记(达内).

    4. **依赖注入(Dependency Injection)**:EJB 3.0引入了JSR 250规范,提供了依赖注入功能,允许容器自动管理Bean的生命周期和依赖关系。通过`@Inject`和`@EJB`注解,可以方便地注入其他Bean或资源,减少了代码的...

    ejb3.0的讲义一起看

    4. **依赖注入(Dependency Injection)**:EJB 3.0引入了依赖注入,通过`@EJB`注解,容器会自动将依赖的bean注入到需要它们的地方,无需手动查找和管理bean实例。 5. **简化会话bean(Session Beans)**:EJB 3.0...

    EJB概述 学习笔记

    - **依赖注入(Dependency Injection)**:通过注解如`@EJB`,容器自动将依赖关系注入bean,提高了代码的可读性和可维护性。 - **无接口bean**:允许开发人员创建不依赖于特定接口的bean,简化了设计。 - **轻量...

    ejb 学习笔记6

    ### EJB学习笔记第六部分详解 #### 一、EJB之间的调用 EJB (Enterprise JavaBeans) 是Java EE平台中用于开发分布式企业应用程序的重要组件。在实际开发过程中,经常需要一个EJB调用另一个EJB来实现更复杂的业务...

    EJB学习笔记.rar

    6. **资源注入**:通过依赖注入(Dependency Injection,DI)机制,EJB可以从容器中自动获取所需的资源,如数据源、JMS队列等。 7. **接口规范**:EJB组件通过定义特定的接口来暴露其服务,这些接口定义了客户端...

    学习EJB3基础知识笔记

    5. **依赖注入(Dependency Injection, DI)**: EJB3支持JSR 330规范的依赖注入,通过`@Inject`或`@EJB`注解,可以在Bean之间实现组件间的依赖管理,无需手动创建对象。 6. **事务管理**: EJB容器自动管理事务...

    软件工程师学习笔记大全(C++,JAVA)4.rar

    这份名为“软件工程师学习笔记大全(C++,JAVA)4.rar”的压缩文件包含了软件工程师在学习C++和Java编程语言时的重要参考资料。这些文档详细涵盖了从基础到高级的各种主题,对于提升技能和准备面试非常有帮助。以下...

    J2EE学习笔记 by dream

    - **CDI(Contexts and Dependency Injection)**:提供依赖注入和上下文管理,是Java EE 6及更高版本中的重要组成部分。 - **RESTful Web Services**:基于HTTP协议,提供了一种轻量级的交互模式,用于构建Web服务...

    javaEE学习笔记

    - CDI提供依赖注入和上下文管理,帮助开发者解耦代码,使组件更加可测试和可重用。 9. **WS(Web Services)** - JavaEE支持创建和消费Web服务,如JAX-WS(SOAP服务)和JAX-RS(RESTful服务)。 10. **JPA与...

    j2ee学习笔记.rar

    - **CDI(Contexts and Dependency Injection)**:依赖注入框架,简化对象的创建和管理。 **6. 学习路径** - **基础篇**:掌握Java基础、Servlet、JSP和JDBC。 - **进阶篇**:学习EJB、JMS、JTA、JNDI等高级技术...

    JavaEE学习笔记

    - **CDI (Contexts and Dependency Injection)**:提供了依赖注入和服务上下文管理功能。 - **RESTful Web Services**:基于HTTP协议的Web服务规范。 #### 三、JavaEE 开发模式 - **MVC (Model-View-Controller)**...

    JavaEE2017最新版基础班学习笔记

    7. **CDI (Contexts and Dependency Injection)**:CDI是JavaEE中的依赖注入框架,简化了组件的管理和依赖关系的注入,提高代码的可测试性和可维护性。 8. **WebSocket**:JavaEE7引入了WebSocket协议,允许双向...

    软件工程师学习笔记J2EE

    《软件工程师学习笔记J2EE》是一份针对Java企业级应用开发(J2EE)的详尽学习资源,对于想要深入理解和掌握J2EE技术体系的软件工程师来说,具有极高的参考价值。这份笔记不仅全面覆盖了J2EE的基础概念,还深入探讨了...

    Spring学习笔记之一“why spring”

    在IT行业中,Spring是一个广泛使用的Java企业级应用开发框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心特性,极大地简化了Java应用程序的构建和维护。...

    J2EE知识点大全,学习笔记

    9. **CDI(Contexts and Dependency Injection)**:提供依赖注入和上下文管理,使得组件间的依赖关系更加灵活和解耦。 10. **WS(Web Services)**:J2EE支持SOAP和RESTful两种类型的Web服务,允许不同系统之间的...

    最全的java达内笔记

    6. **EJB 3.0+的改进**:介绍从EJB 2.x到EJB 3.x的转变,如何通过注解简化bean的配置,以及CDI(Contexts and Dependency Injection)的引入。 7. **部署与测试**:包括EJB的部署描述符,以及如何进行单元测试和...

    Spring Grossip

    首先,Spring框架的核心特性之一是依赖注入(Dependency Injection,DI),它使得组件之间的耦合度大大降低,增强了代码的可测试性和可维护性。在笔记中,我们可能会看到如何通过@Autowired注解实现自动装配,以及...

    牧紫小岩的Spring学习笔记pdf

    它通过提供一系列的模块化组件,支持包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)、事务管理、数据访问、Web开发等多个关键领域。Spring框架的核心价值在于其灵活...

Global site tag (gtag.js) - Google Analytics