Spring依赖注入&Java 5(包含幻灯片和代码)

工程 | Alef Arendsen | 2008年3月18日 | ...

我是在前往开罗的途中写的这篇文章。我们正在意大利西海岸上空飞行,我可以清楚地看到意大利海岸线,碧蓝的海水和轻轻拍打海岸的波浪。现在那里一定很美。我正前往开罗参加由Ahmed Hashim组织的埃及用户组(Egyptian User Group)会议,他无疑会做得很好,我对此深信不疑。我将介绍Spring,这次的主题是依赖注入、类型安全和Java 5。昨天(3月14日),我在荷兰Loenen的Profict冬季营为大约60到70人的听众做了几乎相同的演讲。

最近,关于类型安全、Spring和其他依赖注入方法有很多讨论。我经常发现人们提到Spring的依赖注入功能不是类型安全的,更糟糕的是,有些人认为Spring依赖于XML。由于我不能一直看着飞机窗外(好吧,我可能可以,但这并没有什么用),我想写一篇简短的博客文章,介绍Spring和Java 5依赖注入的现状。

随着Spring 2.5中新增功能以及Spring的子项目JavaConfig的加入,Spring依赖于XML以及其依赖注入不具备类型安全的论点根本就不成立了。虽然过去我们*一直说*Spring不依赖于XML,但表达配置细节的唯一可行选项*确实是XML*。但自从Spring 2.5以来,这不再是一个理论上的论点;现在可以使用纯Java配置依赖项的实用选项。

Spring @Autowired支持

Spring 2.5本身提供了基于注解的依赖注入,其中使用@Autowired注解和@Qualifier注解(或任何其他自定义注解)为Spring容器提供注入依赖项的提示。我不会在这里介绍整个机制。相反,我将重点介绍涵盖@Autowired方法的博客文章和文章
  • Spring框架2.5简介 作者:Rod Johnson
  • Spring 2.5的全面注解支持 作者:Juergen Hoeller
  • 在Spring 2.5中自定义注解配置和组件检测 作者:Mark Fisher
  • Spring JavaConfig

    除了@Autowired支持之外,Spring JavaConfig还提供了一种全新的依赖注入方法。许多博客文章已经讨论了JavaConfig,所以我不会在这里再次完整解释它。我最近收到了一些关于JavaConfig状态的问题。我们已经有一段时间没有发布该项目的任何里程碑版本了。这当然是有原因的。尽管该模型已经运行良好,但我们仍在完善一些细节。我们希望发布我们100%满意的版本,而现在,它 simply not done yet. 请关注JavaConfig项目页面和本博客。新的里程碑版本即将发布。

    JavaConfig方法也在各种博客文章中进行了更详细的介绍

    正如我在Loenen和开罗的会议上所说的那样,Spring JavaConfig 尚未完成。还需要完善一些细节,才能创建一个流畅的DI语言,支持基于XML的DI语言所具有的所有功能。如果您愿意,您可以在这里帮助我们很多。尝试使用Spring JavaConfig并告诉我们您的想法!

    结论

    我在昨天的演讲中试图传达的另一个非常重要的观点是,将Spring容器作为一个依赖注入平台的理念,在其之上实现了各种DI风格。第一个风格已经存在5年了(基于XML的方法)。第二个风格也已经存在相当一段时间了,现在为BEA WebLogic 10版中的EJB3 SessionBean功能提供了基础(也可以在公共领域以Pitchfork的名称使用)。我们发布的最后一个风格是@Autowired风格,接下来是JavaConfig。对我们来说,拥有这个平台才是最重要的。无论您使用的是JavaConfig、@Autowired还是基于XML的方法(或者同时使用所有方法),它都能帮助您获得良好的体验,并实现完全向后兼容。

    关于源代码和幻灯片的说明

    在幻灯片中,您会看到我包含了一张福特T型车的图片。我描述依赖注入时一直使用的比喻是汽车装配线。据维基百科记载,如果没有汽车装配线,福特每月只能生产11辆T型车。有了装配线,一辆T型车只需要93分钟就能生产出来。将(不知道如何组装的)零件组装成一辆可以工作的汽车的标准化流程非常有益。在我看来,采用不影响主线逻辑的方法很重要。JavaConfig提供了这一点。

    代码也已附加。它依赖于JTA API(演示使用Hibernate),该API未安装在Maven存储库中。Lucio Benfante 已经写博客介绍了解决这个问题的方法(在本地存储库中安装JTA API)。

    安装JTA API后,运行com.carplant.plant包中的CarPlantIntegrationTests,并阅读该类的注释。这解释了如何启用JavaConfig、Autowire配置和XML配置(JavaConfig已默认启用)。

    [更新]添加了关于JavaConfig的更多资源

获取Spring新闻

通过Spring新闻保持联系

订阅

领先一步

VMware提供培训和认证,以加快您的进度。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部