产品-关于java遗留系统重构的问题,请教讨论方案。

问题描述

关于java遗留系统重构的问题,请教讨论方案。

目前公司的项目已经有十多年的历史了,现在想进行重构,不知道该如何下手。
目前的实现是:所有的产品代码都在一个项目里面,分了有十几个产品,用包名进行区分,
产品代码之间相互调用有点乱,主要有三个基础产品。

现在是想把各个产品之间的代码拆分,只依赖三个基础产品。如果这样处理的话,jsp,js,css等文件该如何处理?
另外还有一些系统公用的接口重构问题:例如用户选择,目前所有产品的用户选择都用同一个,各个产品的参数过滤条件都不一样,所以写了很多判断,不好维护,有什么好的解决方法吗?

写的比较乱,可以讨论一下方案。

解决方案

1.代码依赖方面,选取maven这样的工具,完成产品间的依赖关系布局(树状)
2.接口+工厂,用面向对象的思想解决多产品依赖公共接口的问题.
其中参数考虑整理为通用参数和变化参数.
通用参数比如:当前操作人,加密公共头等.变化参数用可变参数列表做,返回具体实现时,由工厂完成多参数到固定参数的代理.
3.使用dubbo等工具建立产品间的调用关系布局(并行)

要改就得大刀阔斧的改,改一半留一半太淡腾

解决方案二:

建议你看《京东技术解密》,这本书中完整介绍了一个真实的公司从小到大发展过程中,如何将整个公司的架构从.net平台迁移到java平台,并且保证业务持续进行的方方面面。甚至包括了很多技术外的事情。

时间: 2025-01-02 07:53:31

产品-关于java遗留系统重构的问题,请教讨论方案。的相关文章

八个改善Java遗留系统的技巧

你没看错,就是这个题目:即使是Java系统也会变成"遗留"系统.每当我们想起遗留系统时,我们就会想起那些存储着大量文件数据并只能用COBOL访问的嘎吱嘎吱作响的大型主机.但事实是,Java已经是一门具有15年历史的开发语言,用Java写就的成千上万的系统已经成功运行了十年甚至更久. 因此,考虑到许多读者都会工作在某个遗留的Java系统上,我根据自己的经验特地攒了这八个技巧,来帮助团队更新和激活他们的遗留Java应用. 技巧1:使用分析器 分析器提供了任何其他工具无法提供的功能,从而能够

iOS 遗留系统重构实践

在过去的几个月内,我主导着团队完成了一项工程浩大(累积八个人月的工作量)的重构工作--为我们的App替换数据库.之所以能够把这种伤筋动骨的事情称之为重构,是因为在这段时间内,我们每天向主干合并两到三次代码,期间App上线五次,用户没有感知到任何影响.在这篇文章中,我将讲述我们如何在不影响系统外部行为,也不影响正常交付的情况下,替换掉了数据库实现. 背景 在一个有着良好分层结构的系统中,每一层都有它自己的职责:显示层负责响应用户事件,调用业务层的逻辑,最后做数据呈现:业务逻辑层负责业务规则与数据处

遗留系统的技术栈迁移

什么是遗留系统(Legacy System)?根据维基百科的定义,遗留系统是一种旧的方法.旧的技术.旧的计算机系统或应 用程序[1].这一定义事实上并没有很好地揭露遗留系统的本质.我认为,遗留系统首先是一个还在运行和使用,但已步入 软件生命周期衰老期的软件系统.它符合所谓的"奶牛规则":奶牛逐渐衰老,最终无奶可挤:然而与此同时,饲养成本却 在上升.这意味着遗留系统会逐渐随着时间的推移,不断地增加维护成本. 维护一个软件系统,就需要了解该软件 系统的知识.若知识缺失,就意味着这会给维护人

什么是系统重构

前面我们提到了,面对软件工业时代的到来,我们的软件企业陷入了一种更深的迷茫之中,一种"后有追兵,前有悬崖,进退两难"的境地.后有追兵:面对维护了数十年之久的大型遗留系统,我们到底改还是不改?不改,面对越来越多的需求变更,我们维护的成本越来越高,变更变得越来越困难:面对不断涌现的新技术,使我们的系统显得越来越丑陋与落后:面对越来越多的竞争者,使我们面临着被市场淘汰的风险.前有悬崖:原本运行得好好的软件系统,凑合一下还可以运行几年.一不小心改出问题了,企业立马就歇菜儿了,面对大量的用户投诉

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux

IT遗留系统是云计算所需面对一大挑战

奇怪的是,IT总花费仍在增加,并且增加得很多.现在云计算行业内有大量关于讨论Jevon悖论的说法,他们认为:仅仅在商品或服务方面降低成本,而不是减少总支出,实际上仍然是IT总花费增加. 在这种增加的推动下,IT功能已然融入了当今的商业社会的方方面面,每一项新增的业务都包含所需要的IT相关投资,所以,就事论事的话,总的IT投资必然增加.这种情况和今天的情况之间的区别是,IT不仅仅是一个后台支持功能,而将是面向客户的一个先决条件.IT将成为业务部门实现其长期的目标的合作伙伴,而不会在某个项目结束之后

java做系统好么?可以做哪些系统好,需要什么专业知识?

问题描述 请教各位大侠,用java做系统需要哪些专业知识,请给各位大侠给这些菜鸟讲下?谢谢了 解决方案 解决方案二:跨平台的特性使得java应用很广泛:J2EE:企业应用,基于B/S的应用,目前的主流J2SE:oracle.weblogic等很多产品都用java重写了.J2ME:无线移动设备开发,目前主流手机厂商都支持.解决方案三:Java最初设计开发时的目的是做小型家电的系统,并且实现可移植性.需要的知识的话,内存你得熟,操作系统原理得懂.当然Java基础你得会解决方案四:不论做什么,只要是用

云计算最大挑战是IT遗留系统

本文摘要:奇怪的是,IT总花费仍在增加,并且增加得很多.现在云计算行业内有大量关于讨论Jevon悖论的说法,他们认为:仅仅在商品或服务方面降低成本,而不是减少总支出,实际上仍然是IT总花费增加. 奇怪的是,IT总花费仍在增加,并且增加得很多.现在云计算行业内有大量关于讨论Jevon悖论的说法,他们认为:仅仅在商品或服务方面降低成本,而不是减少总支出,实际上仍然是IT总花费增加.在这种增加的推动下,IT功能已然融入了当今的商业社会的方方面面,每一项新增的业务都包含所需要的IT相关投资,所以,就事论

Java IO系统总结

1 Java IO版本 Java库的IO分为输入/输出两部分. 早期的Java 1.0版本的输入系统是InputStream及其子类,输出系统是OutputStream及其子类. 后来的Java 1.1版本对IO系统进行了重新设计.输入系统是Reader及其子类,输出系统是Writer及其子类. Java1.1之所以要重新设计,主要是为了添加国际化支持(即添加了对16位Unicode码的支持).具体表现为Java 1.0的IO系统是字节流,而Java 1.1的IO系统是字符流. 字节流,就是数据