`

EJB 3.0和Spring的抉择

阅读更多
EJB 3.0和Spring在传递POJO服务时采用了完全不同的方法,这使得开发者在实施POJO时不得不进行艰难的选择。

对于POJO的开发,存在着两种框架EJB 3.0和Spring,这两个框架组件的核心设计理念是相同的:把中间件服务传递给松散耦合的简单旧式Java对象(POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立继承结构和构建应用程序的时候都有高度的灵活性。

但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。

注入方式
Spring仍然是依赖XML来注入到POJO的,XML写起来比较麻烦,虽然流行的IDE都有图形化的编辑界面,但还是很难操作,同时 Spring使用XML来说明配置声明性服务,也会产生一个冗长的配置文件。这些配置文件必须在运行时才能知道其中的错误,哪怕是一个大小写的问题。因此 Spring目前也在考虑如何简化XML配置文件。

EJB 3.0使用Annotation,这要比Spring简单明了,但其功能也受到一定的限制。Spring基于XML配置的依赖注入语法复杂,但功能却非常强大。可以将任何一个POJO注入到另一个POJO,包括应用程序中自定义的那些POJO。

松散耦合度与服务集成
Spring与应用服务器采取松散耦合,作为Spring设计的核心理念,这样增强了Spring的灵活性,但同时也增加了开发的复杂度,因为如此一来,开发者就必须弄清楚Spring对应的应用服务器的。而事实上,这些与应用服务器的关联代码对于开发者大都是不必要的,开发者往往只需要关系业务逻辑就可以了。使用Spring的声明式事务服务来管理Hibernate事务,必须在XML配置文件中明确的配置Spring的事务管理器(TransactionManager)和Hibernate SessionFactory对象。

EJB3.0框架与应用服务器结合较紧密,服务被集成封装,隐藏在EJB接口后面。因为EJB3.0本身就是J2EE标准的一部份,因此,它与其他J2EE服务如JCA,JMX都结合的很好。而缺点也正是结合太紧密,不够灵活。

对Web框架的支持度
Spring在这方面要优于EJB3.0,几乎所有开源项目都有这个特性——对现有的流行技术支持度都非常好。Spring可以灵活地集成各种 Web框架和模板语言,另外自身也提供了相当强大的Spring-MVC框架,而且可以很好的结合spring webflow,webwork,struts等。同时随着Spring Web Services 1.0正式公布,Spring对web service开发明显增强了,这无疑使Spring爱好者开发者更加热衷于Spring。

EJB3.0标准集成JSF,但JSF目前并不成熟,也没有得到预期的效果。同时EJB3.0对其他web框架支持也比较差。

开源与标准规范
Spring框架是开源项目,但不是标准的。Spring的接口配置文件描述都是私有的。虽然,Rona 声称Spring完全支持可以不使用Spring的特殊专有服务,但是实际情况往往不是这样的。因此,一旦使用了Spring的特殊服务,那么就绑定到了 Spring框架上了。例如,如果使用它的管理服务,则必须使用相应的Spring私有的API。而且,Spring的发展完全依赖于Spring开源项目,这使得它的支持力度也不够。

EJB3.0是完全公开的规范标准,它本身是J2EE标准的一部分,因此得到了很多厂商的支持。例如,JBoss在EJB3.0刚出来时,就宣布其新的版本支持EJB3.0的服务器。这样基于EJB3.0的程序就可以比较轻松地在WebSphere、WebLogic以及JBoss之间进行切换(除非使用了应用服务器提供的专有组件)。
分享到:
评论
2 楼 javapub 2010-09-02  
p_3er 写道
Spring2.5之后不是也一样可以annotation的方式吗?

annotation这个我下去还要证实下。
1 楼 p_3er 2010-09-01  
Spring2.5之后不是也一样可以annotation的方式吗?

相关推荐

    EJB3.0和Spring比较

    EJB3.0和Spring是两种广泛使用的Java企业级应用程序开发框架,它们在很多方面有所不同,这些差异主要体现在以下几个关键点: 1. **厂商无关性(Vendor Independence)** - EJB3.0遵循开放标准,由Java社区内的开源...

    EJB3.0和Spring比较-纯文本格式

    **小结:**EJB3.0和Spring在供应商独立性方面都有很好的表现,但Spring通过其灵活的DI机制,在这一领域提供了一种更为简单的方法来实现组件之间的解耦和管理。 #### 二、服务集成(Service Integration) EJB3.0在...

    ejb3.0开发实例(java工程)

    在这个"ejb3.0开发实例(java工程)"中,我们将深入探讨EJB 3.0的主要特性和开发实践。 1. **注解驱动**:EJB 3.0最大的变革之一就是大量使用注解(Annotation),减少了XML配置文件的使用。例如,@Stateless、@...

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...

    ejb3.0开发规范PDF

    EJB 3.0提供自动的事务管理,开发者可以通过`@TransactionAttribute`注解来控制事务的边界和行为,如REQUIRED、REQUIRES_NEW、MANDATORY、SUPPORTS、NOT_SUPPORTED和NEVER。 7. **异步方法(Asynchronous Methods...

    ejb2.0与ejb3.0的区别

    ### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...

    精通EJB3.0 pdf

    《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...

    ejb3.0入门图文教程

    最后,《EJB3.0开发Session Bean.pdf》主要探讨了无状态和有状态session bean。无状态session bean不保留任何客户端特定的信息,适合执行无关联的业务逻辑;而有状态session bean则可以记住客户端的上下文信息,适用...

    EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程)

    在"**EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程).txt**"文件中,你将找到一个完整的示例,涵盖了上述所有步骤,包括具体的代码片段和执行过程,这对于初学者来说是一个很好的起点,可以快速理解并实践EJB 3.0在...

    Java之精通EJB3.0.pdf

    这本书深入浅出地讲解了EJB3.0的核心概念和技术细节,是学习EJB3.0不可或缺的重要参考资料之一。 **主要内容包括:** - EJB3.0的基础概念和发展历程。 - EJB3.0的新特性介绍,如注解、POJO支持等。 - 如何利用EJB...

    《EJB 3.0入门经典》 源码

    在"ejb3.0入门经典教程-source"这个压缩包中,包含了书中各个章节的示例代码,覆盖了EJB 3.0的各个方面,例如实体Bean的创建、会话Bean的使用、事务管理、安全性设置以及JPA的持久化操作等。这些源码对于初学者来说...

    EJB 3.0实例教程.pdf

    EJB 3.0引入了注解,使得开发者可以直接在类和方法上使用注解来声明bean的角色和行为。例如,`@Entity`用于标记实体bean,`@Stateless`和`@Stateful`用于标记无状态和有状态会话bean。 **2. 依赖注入(Dependency ...

    李腾飞EJB3.0 源码 源代码

    "李腾飞EJB3.0 源码 源代码"可能包含的是李腾飞教授或团队关于EJB 3.0技术的实践示例或教学资源。通过分析这些源码,开发者可以深入理解EJB 3.0的实现细节,例如如何使用注解定义Bean、如何处理持久化、如何进行依赖...

    EJB3.0API.rar_ejb_ejb3.0a_ejb3.0api

    压缩包中的文件如“ejb-3_0-fr-spec-persistence.pdf”、“ejb-3_0-fr-spec-simplified.pdf”和“ejb-3_0-fr-spec-ejbcore.pdf”可能是EJB 3.0官方规范的文档,分别详细阐述了持久化、简化的规范和核心EJB 3.0的内容...

    EJB3.0架包

    EJB3.0是EJB规范的一个重要版本,它在EJB2.x的基础上进行了大量简化,提高了开发效率,并引入了注解驱动的开发方式,使得EJB更易于理解和使用。 在EJB3.0中,主要包含以下关键知识点: 1. **实体Bean(Entity ...

    精通EJB3.0 中文版 3/3

    罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...

    EJB 3.0规范官方文档

    EJB(Enterprise JavaBeans)...ejb-3_0-fr-spec-ejbcore.pdf、ejb-3_0-fr-spec-persistence.pdf和ejb-3_0-fr-spec-simplified.pdf这三份文档共同构成了EJB 3.0的完整知识体系,是深入理解EJB 3.0规范的重要参考资料。

    精通EJB3.0 中文版 1/3

    罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...

    传智播客ejb3.0教学ppt

    - **书籍推荐**:《EJB3.0入门经典》,该书详细介绍了EJB 3.0的核心概念和技术要点,适合初学者入门。 - **电子资源**:《EJB3.0实例教程》免费电子版,提供了大量的实战案例和示例代码,有助于加深理解。 #### 九...

    EJB3.0规范和API文档

    **EJB 3.0规范和API文档** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组成部分,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。EJB 3.0是EJB规范的一个重大更新,极大地简化了开发...

Global site tag (gtag.js) - Google Analytics