在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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:522435

评论

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

防火墙事件日志及日志分析

运维有小邓

日志管理工具 IT运维服务

金仓数据库KingbaseES PAKCAGE的使用

金仓技术

KingBase 数据库· 金仓数据库

金仓数据库KingbaseES如何通过Hint影响执行计划

金仓技术

KingbaseES 金仓数据库

金仓数据库 2025 征文大赛火热启动!丰富豪礼 + 技术曝光,等你来战!

金仓技术

征文活动 金仓数据库

Studio 3T 2025.7 发布 - MongoDB 的终极 GUI、IDE 和 客户端

sysin

mongodb

MyBatis中的 10 个宝藏技巧!

量贩潮汐·WholesaleTide

Java 数据库 mybatis

企业内部用IM软件:安全高效的企业内部沟通工具

BeeWorks

即时通讯 IM 私有化部署 企业级应用

从一棵树到一片森林:Mint Forest V3 正式上线!

NFT Research

blockchain web3

搞定 XLSX 预览?别瞎找了,这几个库(尤其最后一个)真香!

Immerse

k8s中资源限制 limit 和 request 的关系

陈德伟

k8s JVM Request Resource limit

瞧瞧别人家的日期处理,那叫一个优雅!

不在线第一只蜗牛

Java

即时编译助力金仓数据库KingbaseES分析能力飞跃

金仓技术

JIT 金仓数据库

当KES高可用共享集群部署遇到文件系统损坏,该如何解决?

金仓技术

KingBase 金仓数据库

VMware Cloud Director Availability 4.7 - 灾难恢复和迁移 (DRaaS 解决方案)

sysin

vmware

如何基于 Kestrel 实现 socks5 代理

八苦-瞿昙

C# Proxy

我定制的通义灵码 Project Rules,用 AI 写出“更懂我”的代码

阿里巴巴云原生

阿里云 云原生 通义灵码

阿里云 AI 搜索开放平台:RAG智能化工作流助力 AI 搜索

阿里云大数据AI技术

人工智能 阿里云 rag AI搜索 QwQ

SANnav Management Portal 2.2.1 for ESXi - SAN 可视化管理软件

sysin

SANnav

VMware Cloud Director Availability 4.7.1 - 灾难恢复和迁移 (DRaaS 解决方案)

sysin

vmware

SpecterInsight 4 - 基于 .NET 的跨平台后渗透指挥与控制 (C2) 框架

sysin

渗透

使用华为开发者空间搭建WordPress博客平台

华为云开发者联盟

华为云 华为开发者空间

我定制的通义灵码 Project Rules,用 AI 写出“更懂我”的代码

阿里云云效

阿里云 云原生 通义灵码

聊聊SpringAI流式输出的底层实现?

王磊

MySQL的高可用解决方案

陈一之

MySQL 高可用架构

用 AI 革新软件测试

俞凡

人工智能 软件测试

企业im有哪些? 哪款更适合你的即时通讯需求?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

域名状态异常是怎么回事?怎么解决?(国科云)

防火墙后吃泡面

Kubelet 可观测性最佳实践

观测云

Kubernetes

龙蜥专家走进中国农业大学 分享如何驱动生命科学高效计算

OpenAnolis小助手

操作系统 龙蜥社区 浪潮信息 龙蜥高校行

Acunetix v25.4 - Web 应用程序安全测试

sysin

Acunetix

QT 实现 C++ 数据类与 json 的转换

电子尖叫食人鱼

c++ qt

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