一劳永逸,配置为王:关于JAVA系统配置化的一些想法

       入行三年,作为一个JAVA开发者,我做过不少系统,其中经常碰到的问题就是客户的需求不断的改变,需要不断的修改一些已经设定好的值,之前没有过多的在意这一点,现在越来越发现,这是一个非常严重的问题,如果客户的需求不断的改变,那么开发人员的工作量就大了,这对于开发者来说是最不想看到的。

       之前调试过一个接口,本来我是想懒省事,设置了一些固定值的,然后客户先后两次更改这个配置,导致我不断的去修复程序,我很心烦,客户也是嫌效率低。从那以后,我开始越来越关注如何用最少的时间去开发一个系统然后让用户自行的修改一些参数,从而满足客户的实际需要呢?比如,有个接口,突然修改了密码或者服务地址,其他都没有变。按照以前的做法,你需要去系统修改具体的代码,现在的思路则是,将这些配置,比如用户名,账号,密码,服务地址,Token,时间等全部维护在数据库里,并做成一个界面去管理,如果你其中任何一项变化了,我只需要更改对应的数据即可,然后立即生效,根本不用动代码。这是最简单的处理办法。

       事情并不总是这么简单的,如果有一天,接口突然变了,那你就不能用上面这种办法了,而是需要更改接口,也就是需要重新写代码。这怎么办呢? 写吧,反正也不是很难。但是你要这样想。这样下去,每次更新接口,你都需要不断的重复之前不知道写了多少次的代码(其中大部分是相同的或相似的)。这是非常不能容忍的,除非你闲的蛋疼,吵着嚷着说熟能生巧。

       按照我们的思路。接口变化了,但是整个逻辑处理的过程没有变化,依然是拼装参数,然后请求。然后解析结果,如此而已。这样,你就可以这样来处理。首先,你要初始化一些接口需要的参数或者类,比如Httpclient,你首先要new 出来吧,随后就是拼装参数,无非就是一个个的JSONObject,然后封装成一个对象。这是经常需要变动的,我们的需求变化亦或者是接口更新,就是需要改这个部分的代码。然后就是需要用GET 或者POST 的方式去请求数据。 然后是解析结果,这个倒是不经常变动。综合分析,你实际上需要改动的知识拼装参数那一部分。是不是工作量就大大降低了?

       系统配置化的另一个用途就是可以实时控制系统的一些定时任务,我们需要把定时任务的时间和开关都用数据维护起来,每一个定时任务就可以做到操控自如,根本不需要反复的修改代码或重启项目。

       一个更值得关注的问题就是,现实项目中有很多系统产生的文件垃圾,这些垃圾短时间看没有什么影响,如果时间过长,就会严重影响系统性能。如果我们把这些位置的文件占用的空间大小管理起来,如果超出我们设置的预警,就可以人为的或者自动的释放那些空间,那感觉岂不美滋滋的。

       系统配置化,目前能想到的就是这么多了。相信还有很多配置化可以施展的地方。以后慢慢发现吧!

       2020年除夕就快到了,祝读到这里的你新年快乐,身体健康!
一劳永逸,配置为王:关于JAVA系统配置化的一些想法_第1张图片

你可能感兴趣的:(JAVA-后端)