代码设计的初衷:
随着项目逐渐发展起来后,代码的维护和新功能的添加或老功能的调整也渐渐麻烦起来。比如新的业务需求需要重写一个方法时,你千辛万苦的找到原来的代码,然后大刀阔斧的改很可能牵一发而动全身,导致整个项目雪崩。当你有一定经验后知道不能在原来的代码上改,然后你就重载一个方法,但苦逼的你发现新的方法的入参和老方法的入参惊人的一致,只是内部逻辑和返回值不同,于是你只能重新写一整条新的链路(Controller ->Service->ServiceImpl)实现你新的需求,日复一日的累计之后,后面接盘的兄弟也不敢随便删你的代码就放任随之,这个类就会变的非常的臃肿。
公司的项目需要对之前的代码进行调整,但原实现多达几千多行的代码,改起来望而生畏啊。还考虑到上面几点于是尝试使用新的编程方式去做,这里记个笔记防止以后忘记,留个醒。也献给刚入公司,不敢随便改代码,工作还得做的小白们一个参考。
我想要的:
- 原逻辑代码一字不动 ,保证原业务的正常运行;
- Controller层和接口层不想动 精简模式,避免代码臃肿;
- 对新的业务逻辑实现自由简单的重写和扩展 ;
解决办法:
对于一般的spring项目来说,要解决上面三点,最容易的方法无非是对Service层的实现类进行重写,然后将调用的实例指向新的实现类就行啦。道理说的通,大概的方法也是这个样子,只是有些细节与想象中不同(要是相同也不用这么废话啦)
难点:
一般在Controller层使用@Autowired进行注入:
@RestController
@RequestMapping(value = "/hello", produces = { "application/json;charset=utf-8" })
publ