BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Spring Migration Analyzer:从Java EE到Spring转换的工具

| 作者 Kostis Kapelonis 关注 0 他的粉丝 ,译者 张卫滨 关注 13 他的粉丝 发布于 2013年1月3日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

SpringSource已经发布了第一个里程碑版本的Spring Migration Analyzer。这是一个辅助类的应用程序,它会扫描JavaEE构件并生成一个简要的报表,在这个报表中包含了如果这个应用程序要迁移到Spring时要特别注意的API和类。这个报表有助于做出迁移评估,因为它可以作为估计迁移难度的工具。

Spring Migration Analyzer是作为命令行工具提供的,它可以运行在安装了JVM的操作系统之上(它只会使用Java)。它以已存应用程序的二进制部署文件(如war或ear)作为输入并产生一个HTML的输出报表(在单独的目录中)。这个报表包含了探查到的JavaEE技术列表以及将其迁移到Spring/Tomcat所需工作的建议。页面上会有一个整体概览区域,你可以点进去查看每个类会如何影响迁移工作(如果他们使用了特定的JavaEE API的话)。会考虑到的技术包括:

以下是一个示例报表:(点击放大)

Spring Migration Analyzer Report

Spring Migration Analyzer也会探测到一些其他的特性如EJB的类型(如Session还是Entity)、Spring库、供应商特定的部署描述符甚至编码中使用的事务。对于探测到的每一项技术都会有文字来描述在进行Spring迁移时要怎么做。报表还包含了应用程序中每个类的结构如域、方法、java导入以及抛出的异常等。

但需要注意的是,如果按照默认配置运行Analyzer的话,你会得到很多错误的结果。这主要是因为它处理的是二进制构件而不是源码,它不会区分应用程序的实际代码和外部类库的代码。理想情况下,报表中要排除外部类库而只关心开发人员创建的源码(就像其他的软件报表工具所处理的代码一样,这样的工具如单元测试、代码覆盖率以及质量检查等)。

例如,一个使用Logback来记录日志的应用程序会报告它使用了JMS:

Wrong detection of JMS

但源码中并没有JMS的代码,这只是因为logback二进制包中导入了JMS,因为它支持将JMS作为日志目标。因此为了得到更为有意义的结果,你要使用“exclude”命令行分支来忽略外部类库(如/WEB-INF/lib目录)。并且输出目录不能与输入目录相同。

因此,尽管在理论上工具的这个命令行分支是可选的,但实际上它是必需的。总之,以目前的状态Spring Migration Analyzer是一个有用的主意,但是为了避免向用户产生错误的报表还需要一些调整。

想得到更多信息的话,可以查看文档以及当前的缺陷列表。它的源码托管在GitHub上。

 

Kostis Kapelonis 专注于企业级应用程序开发的软件工程师

查看英文原文:Spring Migration Analyzer: An Assistant For JavaEE To Spring Conversion

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

这篇文章原文的评论很有意思 by 张 卫滨

这篇文章原文的评论很有意思也很热烈 大家感兴趣的话,可以移步观看

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT