思诚科技 seecen LOGO
咨询热线:0791-87557233
 您现在的位置:  首页 > Java框架 

利用Spring框架改进J2EE编程

来源:网络    更新时间:2014-12-3


  摘要

  J2EE编程正在变得越来越复杂。J2EE已经发展为一个API、复杂化的编程和配置的复杂网络。为了应对这种复杂性,新的框架和方法不断涌现。这些框架高度依赖于一个称为IoC(InversionofControl,反向控制)的概念。本文将探讨这种方法的一些特性和优点,因为这种方法与J2EE编程相关,而且可以使J2EE编程变得更轻松。

  简介

  马克·吐温的一句话常被引用:“……关于我死亡的报道是一种夸张。”现在已经出现了很多关于.net的流言,以及认为J2EEAPI的复杂性无法克服和EJB作为一种组件架构即将灭亡的流行极客(geek)文化。从学术或者只是想像的立场来看,这没什么大不了的,但事实是J2EE/EJBAPI已经经历了一场达尔文式的进化。具有DCOM或CORBA项目经验的读者会明白我的意思。过去,人们都乐于听闻EJB组件模型的美好前景。实际情况是,人们在与J2EE相关的各个方面都投入巨大。宣布抛弃以前的所有工作并重新组织,这种想法看起来也许有理,但是它并没有建立在良好的业务洞察力之上。EJB继续发展,而术语、实践和框架也随之涌现(springup),它们弥补了J2EEAPI的不足。我说的不是“Spring出现(up)”,对吧?

  我是一名顾问,职责是帮助构建大型的分布式应用程序,而且通常是J2EE应用程序。因此,我有机会亲历许多项目的整个生命周期。另外我还能够将我从一个刚刚完成的项目中刚刚学到的东西直接带入一个全新的项目。从某种意义上说我的“自然选择”过程加快了。我可以说最近Spring(更具体地说就是IoC,即反向控制)已经越来越多地融入到我的项目中了。在本文中,我将从支持或增强J2EE项目的角度来探讨Spring。更确切地讲,Spring框架能够标准化许多J2EE最佳实践,还能同类化(homogenize)许多无处不在的J2EE模式。接下来我们将浏览Spring庞大体系中的一小部分内容,重点介绍(依我浅见)能够帮助改进J2EE应用程序的功能。

  IoC简介

  一般来说,IoC是一种管理类之间关联的技术。没错,就这么简单!任何人都不是孤立的,对于各个对象来说也是如此。应用程序中的对象是相互依赖的。通过编程方式来表现这种依赖性通常既冗长又容易出错。好的IoC框架将声明式地(通过一个XML配置文件)而不是编程式地(这种方式的可靠性较差)——串连起应用程序之间的相互依赖性。

  自由使用接口是IoC开发的一个主要方针。接口编程大大提高了应用程序的灵活性,从而增强了声明式的关联。接口实现是通过IoC配置在运行时声明的,这样就能够在不影响或少影响实际应用程序代码的情况下“重建(rewire)”关联。这在各种IoC框架中是反复提及的一个主题,一般而言,也是应该遵循的良好实践。

  一个小例子

  我喜欢通过例子来更快地理解概念。下面就是运用了IoC的一组例子;您将看到,这些例子的复杂性是逐递增的。大多数人在一开始使用IoC容器时都是利用其依赖注入(injectdependency)功能——即,声明式地将对象关联起来。利用IoC有助于创建更整洁的代码,如有必要重建对象之间的关联,一般来说对于这些代码也会更灵活、更容易。IoC的优点远不止依赖注入,而其扩展功能确是以依赖注入程序为起点的。

  我们将从构建简单的依赖注入例子开始。第一个例子用于阐明已经提及的两个概念。第一个概念是IoC在运行时构建和关联对象的能力,第二个是与接口编码相结合而产生的灵活性。首先假定架构师递交了图1所示的UML。


图1.接口可插性

  这个小例子表示一个温度测量系统。几个传感器对象属于不同的类型,但都实现了ProtocolAdapterIfc接口,因此在将它们插入TemperatureSensor对象时,它们是可互换的。在需要TemperatureSensor时,系统中的某个实体必须知道要生成并与该传感器对象关联的ProtocolAdapterIfc的具体类型。在本例中,该传感器可基于命令行参数、数据库中的行或通过属性文件进行配置。本例还不足以造成挑战或展示一个复杂框架,但它足以阐明IoC基础。

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2020