当一个立志成为程序员的人开始一门新技术的学习时,是很兴奋的,因为很多新技术的介绍总是有很多酷炫的新名称,酷炫的新功能和一些与旧技术的对比,在对比中,新技术总是用各种对比数据把旧数据踩在脚底,彰显自己的高富帅。于是,迫不及待的新手开始了新技术的探索之旅,全然忘记了他为什么要学习这门新技术,双眼也看不清这些酷炫技术后面的坑。于是,当新技术的酷炫外衣剥去之后,坑历历在目,连上网络,搜索半天却因为技术太新而无人应答,这时候新手变成了怨念在苦手,在坑中暗暗哭泣。

    我对新的技术总是很提防,因为它就像游戏的战争迷雾,风险隐藏其中,不走近根本就不知道。但一门技术的出现,总是光芒万丈,都是要砸掉旧技术的锁链,解放生产力,提高一个数量级的性能,等等等等,好不诱惑。怎么平衡技术的风险和效益呢,下面我说下我的判断标准。

    对我而言,我一般从很世俗的标准来评判这个问题,那就是是否能帮我解决问题。是的,我一般都是心怀问题在各种技术中游走,只有这样,你才会知道你要什么,对我而言,我需要的第一样东西,就是少干活,多产粮。为什么要用spring,因为IOC?因为POJO?因为AOP?No,都9012年,谁还在乎这个,我用spring的唯一原因是它几乎关联了市面上所有的流行工具,各种DAO(hibernate,mybatis),各种MQ(activemq,rabbitmq),各种缓存(memcache,redis),基本上大家用的主流技术工具或多或少都能和spring关联上,这样就极大的节省我用各种工具的时间。到spring boot的时候,其实我是有意见的。因为spring boot号称是为了简化大家的配置工作,但在现实的业务的世界,复杂是不可避免的,如果在入门的时候简单了,那么在后面必将要补回来的,因为复杂的本质是业务的复杂,没有谁能够抹平复杂的业务,所以复杂的配置也必然存在。但是start的出现解决了spring和各种工具的依赖包问题,这个确确实实的比我自个在maven的pom中去加jar包要省事的多,jar地狱的问题有所缓解。所以我最后决定使用spring boot的最大原因,就是starter。记住这个原因很重要,因为我们每用一个新的技术工具,技术框架,其实都要明确的问自己,为什么要用,解决了什么问题。

    然后再说下mybatis,mybatis一般的说法是比hibernate要灵活,要轻量级。但不好意思,我一开始就不是用mybatis对标hibernate,因为我的sql还不错,所以对任何包装sql的dao工具都不是感冒,我都能用sql搞定了,为啥要用一个包裹了sql的工具。是的,我对标的是jdbctemplate,它其实很好用,灵活好用,简单方便,我现在有时候还是喜欢它。那为什么要用mybatis呢,因为它能返回dataobject?这是一个原因,因为一个数据对象的可读性,比用jdbctemplate返回的map要好看一些,但这不是根本原因,因为jdbctemplate也可以返回 数据对象,mybatis并没有绝对的优势。是的,我最终选择的其实不是mybatis,而是mybatis generator,因为它可以帮我生成所有基础的crud代码,我不需要改任何东西。拥有它,我就拥有了所有数据表的dataobject和所有的CRUD,是针对所有表的所有字段的查询,这个很重要,因为我已经不愿意一遍又一遍的写基本的CRUD语句了,特别是修改了数据库表的时候。这就是选择mybatis generator的原因,我不想写CRUD,不想改CRUD操作代码,这就是我需要用它解决的问题。

    这一篇算是废话,因为程序员一般不爱看这个,show me the code,下一章,我们开始从spring  boot的新建项目开始,但我不会简单的重复别人的做法,我会在建立的时候,带上我掉的坑来讲。

05-17 03:00