写点什么

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

  • 2013-01-02
  • 本文字数:970 字

    阅读完需:约 3 分钟

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

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

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

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

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

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

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

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

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

2013-01-02 06:522388

评论

发布
暂无评论
发现更多内容

Vagrant 快速入门

FeiLong

vagrant

ARST Week7

时之虫

ARTS 打卡计划

大话设计模式 | 4. 装饰模式

Puran

C# 设计模式

北京区块链规划重点发展海淀朝阳通州等区,加大对代币监管力度

CECBC

北京行动计划 四个高地 需求导向 为政务服务

修炼我们的智慧之眼

J.Smile

认知提升

iOS - CollectionViewCell对应不同flow layout的实例

teoking

ios

【计算机网络】网络层——路由器与路由选择协议

烫烫烫个喵啊

计算机网络 网络层

数据分析之AB testing实战(附Python代码)

JackTian

Python 编程 程序员 数据分析 AB testing实战

11个提高产品经理工作效率的必备工具,果断收藏

马踏飞机747

大数据 设计 产品经理

架构师训练营第六周作业

Melo

百万级别数据Excel导出优化

Throwable

架构设计 springboot

玛雅密码社区不忘初心 共筑未来通证新经济

Geek_116789

基础篇:JAVA基本类型

csc

Java Java 25 周年

架构师训练营第六周总结

陈靓-哲露

不会有人还不知道全文检索工具Lucene怎么用吧?文字长文教程

给你买橘子

Java 搜索引擎 lucene 程序员 开发工具

关于架构的几件小事:架构概述(1)

北风

架构 架构设计 架构师 架构设计原则

看动画学算法之:排序-冒泡排序

程序那些事

算法 动画 排序算法 轻松学

如何搭建Hive 环境

Rayjun

大数据 hive

云原生实践系列:概述

孤岛旭日

Serverless 微服务 Service Mesh 服务架构

“新基建”来了!云南三年投资3776亿!

CECBC

谈谈对分布式事务的一点理解和解决方案

Throwable

分布式 分布式事务 架构设计

3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案

Throwable

Java 监控 Grafana Prometheus springboot

DolphinScheduler-1.3.0-dev功能体验

Eights

大数据 hadoop

架构师训练营第六周作业

烟雨濛濛

list vs tupple

Leetao

Python 数据结构 Python基础知识

SpringBoot2.x入门:应用打包与启动

Throwable

springboot

SpringBoot 入门:02 - 实现 MVC

封不羁

Java spring springboot

基础篇:Object对象

csc

Java Java 25 周年

架构师训练营第六周总结

烟雨濛濛

Newbe.Claptrap 框架中为什么用 Claptrap 和 Minion 两个词?

newbe36524

Docker .net core netcore ASP.NET Core

并行流ParallelStream中隐藏的陷阱

Throwable

Java

Spring Migration Analyzer:从Java EE到Spring转换的工具_Java_Kostis Kapelonis_InfoQ精选文章