利用Spring框架改进J2EE编程

http://tech.ddvip.com   2008年03月28日    社区交流

内容摘要:本文粗略地概括介绍了IoC,并详细介绍了Spring。Spring框架具有许多功能,其中许多功能在本文中只是点到为止。从基本的依赖注入到复杂的AOP操作,这些组成了Spring的强大功能,这是它的主要优点之一。能够根据问题需要使用或多或少的IoC功能是一个极具吸引力的理念。

  运行该应用程序时,根据插入的CarrierPigeon值,我们可以看到一些有趣的行为。如果我们的CarrierPigeon没有使用过度并能执行,我们将看到这样的输出:

The sensor says the temp is:42

  显然“信鸽”没问题而且状况很好,并计算出温度为42。如果由于改变CarrierPigeon Spring节中的值,而造成“信鸽”使用过度或不能执行,我们将得到如下所示的结果:

yourco.project.exceptions.comm.SoftenedProtocolException: protocol
error [comm failure]: I'm Tired!
at yourco.project.springsupport.SensorInvocationInterceptor.invoke
(SensorInvocationInterceptor.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke
(JdkDynamicAopProxy.java:174)
at .getSensorValue(Unknown Source)
at yourco.project.main.Main.main(Main.java:32)

  在这种情况下,“信鸽”或者使用过度,或者不能执行,因此得到的结果是SoftProtocolException,并附带一条消息说明发生的情况:“I'm tired!”够酷吧!

  我希望人们能够开始了解Spring的强大及其多种功能。Spring框架悄然兴起,并成为开发人员的编程工具箱中的真正的“瑞士军刀”。Spring在实现让开发人员能够集中于应用程序的基本组成部分这一传说般的承诺方面做得不错,这也正是它得以大行其道的业务逻辑。Spring将您从J2EE中的一些错综复杂的方面中解放出来。Spring的强大在于它能够使大多数东西看起来就如同非常普通的Java对象一样,而不管它们的性质或来源如何。既然Spring自身肩负起创建、关联和配置的重担,那么开发人员要做的只是掌握使用对象而不是构造对象的方法。Spring就如同在杂货店购买的预煮的饭菜。您要做的只是决定想吃什么、把它带回家、加热,然后吃!

  综合说明

  Spring是一个非常健壮的轻量级框架,它极好地弥补了J2EE/EJB环境的不足。Spring真正伟大的一点在于它不走极端。您可以以一种非常简单的方式开始使用Spring(正如我所做的那样),只是建立常见的关联,作为定位器模式的一种实现。稍后,您将发现其惊人的功能,并且很快对它的要求会越来越多。

  我所发现的一个惊人之处是Spring所提供的测试灵活性。现在人们对通过Junit进行单元测试日益重视,这增加了测试,而不是减少测试。J2EE容器的使用使测试极端复杂,以至于难以进行。这种困难局面源于业务逻辑和容器框架服务之间产生的耦合。借助于Spring的配置机制,使实现可以动态切换,这样就有助于将业务对象从容器中释放出来。我们已经看到,如果只想测试Web组件,将活动的EJB换成其代理或一个已清除的业务服务并不会造成太大影响。借助于JDBC或Hibernate数据访问对象,我们可以使用常见的简单JDBC、非XA的数据源连接来测试这些组件,并将它们无缝地换出,代之以健壮的基于JTA、JNDI的对应连接。结论是:如果代码易于测试,并因此测试得更多,那么质量必然会提高。

  结束语

  本文粗略地概括介绍了IoC,并详细介绍了Spring。Spring框架具有许多功能,其中许多功能在本文中只是点到为止。从基本的依赖注入到复杂的AOP操作,这些组成了Spring的强大功能,这是它的主要优点之一。能够根据问题需要使用或多或少的IoC功能是一个极具吸引力的理念,我认为,这在通常错综复杂的J2EE编程领域也是颇受欢迎的。现在看完了这篇文章,我衷心地希望它能对您有所帮助,并可以应用到您的工作中。欢迎随时提供反馈!

来源:BEA    作者:Peter Braswell    责编:豆豆技术应用

正在加载评论...