架构1.0,虽然已经稳定开发人员也按着这个规范开发但是有一个问题,就是类太多.
auto表示是由自动化代码生成工具生产的,每一个package下面都有大量的类.
但是由于继承,每一个类的代码其实很少.那么能不能把UserModel,UserMapper 等等这些相关的类合在一个类文件中呢?
放在一起的优点
1 类的修改比较方便, 不用跳到各个文件中去查看.
2 类文件的数量大大减少, 看着很舒服.
已经不记得是怎么找到kotlin的. kotlIn不仅能完美解决上面的问题,而且它自身的特性一用上它根本就再也不想写java了.
那么现在的核心就是学习kotlIn.
kotlin是 jetbrain公司出品的,也就是和idea是同一个公司出品. 那么现在的问题是,使用idea还是继续使用eclipse.我在没学kotlin之前,因为很多次看到网友说idea是最好的java编辑器.所以也尝试了几次, 最终还是由于不喜欢接触新事物的心理而放弃掉了.
idea是自动保存,而我写代码一般是多个类一起写好然后再保存,springboot再热重载, 这就导致了我改一下它就立即热重载了就很麻烦, 然后有觉得项目的配置麻烦,还不能把多个项目放在一起. 然后想着eclipse用了4年,除了有时卡一些好像也没有什么问题, 就没有深入使用idea.
尝试了eclipse搭配kotlin结合的并不是很好, 而idea已经集成了kotlin所以只能逼着自己放弃eclipse,边研究idea边学习kotlin.
真是不用不知道,一用吓一跳, kotlin和idea的完美结合, 写代码的感觉就像行云流水,滔滔不绝,写了就停不下来.
不知道大家有没有这个感觉,以前高铁没那么发达,去远的地方一般是坐火车,一坐就是10几个小时虽然有时是卧铺但是还是很难受.但是自从坐过了一次高铁, 虽然价格贵些,但是舒适程度大大提高,时间也缩短了一倍. 从那以后我再也不会坐火车, 即使过年很难买到高铁票, 我也不会考虑火车. 曾经思考过为什么我现在会这么反感坐了十几年的火车, 一句话就可以概括: 由俭入奢易, 由奢入俭难.就和现在的idea 和eclipse,kotlIn和java 一样,我再也不想打开eclipse,再也不想写java.
用了kotlIn后文件数量可以减少70%到80%而代码量可以减少30%左右.自己有这个感觉.
相应的架构就有些许变化, 架构1.0 的几个Base类就可以合在一起, 而每个表所需的类也可以合在一起, 那么一个表就对应一个表名相同的类文件.
auto package下就不需要其他package
上图中可以看到我把sql集成到了mapper中, 但是在java中如果复杂的sql是必须写在xml中, 由于kotlIn有三引号运算符,就可以直接把复杂的sql语句放到mapper中与放在xml中的效果是一样的.这样不仅减少了xml文件, 而且本身看xml就不如代码看的舒服. 这也是为什么各大框架越来越不使用xml做配置文件, 比如spring boot, gradle等等,而且调试修改也会更方便.
下图是java中的配置类,包括web, 安全, mybatis,工具类,大部份是jhipster自带的等等.
下图是相同功能的kotlin版配置类.可以明显看到类文件少了很多,把相同功能的类合在一起, 即容易调试也减少文件数量.加上kotlIn语言特性即使很多类放在一起单个文件的行数也不会很多.
架构变了,那么自动化生成代码的也就需要改变了,不仅用idea和kotlin重写了自动生成,还添加了kotlin版的模板代码 image1.png auto文件夹下的类就是自动生成的,而image2.png 就是自动生成的内容.
那么现在的架构就是
idea,kotlin,spring boot,mybatis,maven, 自动化代码生成工具2.0
现在代码方面的优化好像已经找不到什么可以优化的地方了. 那项目的构建可不可以在优化一下, 看着maven的那复杂又冗长的xml文件, 自然而然就想到要使用gradle. 和idea一样其实早就学习了几次还是因为想着maven用着也蛮好, 除了xml长点配置复杂点,该有的功能都有了,新项目复制一下不就行了, 也不用改什么为什么要换gradle呢? 但是这次不一样,也许是因为学的东西越多, 学习能力,解决问题的能力也越来越强对新事物的抵触能力也没有那么强烈,也许是因为学了idea和kotlin尝到了甜头. 果然学习之后, 恩 真香(跟买xr一样, 买之前边框大 摄像头不好...) .学的东西越多你越会觉得自己太菜了,了解的太少了,就会督促自己继续的学习.
那么现在的架构就是
idea,kotlin,spring boot,mybatis,gradle, 自动化代码生成工具2.0.
这个也是我们实际项目中用得最广泛的架构,所有新项目都是以这个为基础开发的.
源码地址: https://github.com/kaikai55/base