个人博客开发之旅后端篇01:技术选型

发表于 2023-07-06 | 后端

前言

学习过程钟的产物

1.构建工具

就和前端的vite和webpack一样。后端也有maven和gradle的选择。

最终选择gradle

我不是讨厌maven,我只是讨厌xml,真的看起来很长,很冗余,让我看起来很难受。 但是二者差距真的很校

二者差距

maven是很成熟的构建工具了,不管是各种问题还是插件,都有非常多的解决方案。但是问题在于,我真的很讨厌xml这种东西,对于我来说很冗余。 gradle可以看成maven + ant,有良好的观感,可以直接写脚本,但是相对来说解决方案没maven多。

框架选择

自然是spring全家桶啊!!!

ORM框架选择

最终选择

我选spring data jpa,因为我的查询大多数都以单表为主。 小项目大多单表,大项目数据量多的表,为了保证性能,更是有很多单表查询。 另一方面,我个人不是很喜欢xml这种东西。mybatis-plus这种东西,是很不错,但是我不会考虑让他上生产。

技术差异

这里可以选择的也比较少,大概常见的有以下三种:

mybatis spring data jpa spring data jdbc spring data jdbc我不想说了,大家自己了解就好,我着重说以下mybatis和jpa。 mybatis其实也不用我解释,真的算是很成熟很老牌的技术了。 可以xml和非xml(注解)都很好的支持,也有代码生成器,可以生成xml、bean和dao。 也有mybatis-plus这种优秀的工具,其优点在于可以对sql高度自由控制,想怎么写怎么写。

spring data jpa,其实这个可以理解成hibernate的加强版,其实很多人瞧不起Hibernate,甚至有人觉得是时代糟粕。 我其实挺喜欢这玩意的,他的缺点在于,对多表和自定义返回支持的很差。 我司开发习惯是,新建dto,继承实体bean,然后写入自定义属性,mybatis配置返回dto。 但是jpa的话,你要一个一个属性写出来才行,我个人觉得比较麻烦。

微服务和项目结构

微服务是现今最火的概念了,我个人理解是把项目按功能切割成多个小项目,更方便维护。 关于项目结构,看多了pig和ruoyi,我习惯的把项目写成了多模块。 我后来发现,并不好用,因为实际的业务,不会有你想象的那么少,都集中在一起,会让电脑变得很卡。 而且,我去搜了资料,多模块是指一个主模块(指启动)其余都是辅助模块。 不管是哪种理由,我个人都更倾向于,单独的项目开发

安全框架

我选了spring security不为别的,纯属是想试一下spring超级全家桶

lombok

对于这个网上好评差评各一半,大概是因为很多人觉得他侵入性太强? 但是做为小项目,我倒是不在乎,果断的用了

配置中心

配置中心和服务发现的话,应该是比较火的阿里系nacos和spring官方的consul。 我最后选了consul 因为我搭建nacos的有奇奇怪怪的问题,比如把nginx、reids、mysql识别成了java项目节点。 consul也有很多问题,因为没有账号密码系统,所以看起来更像是内网用的东西。。

CI/CD

小项目用不起好的,比较知名的自然是jenkins,但是把,我很讨厌这玩意,因为我感觉很丑。。。 但是发现了drone,感觉很不错,虽然不如jenkins功能性那么强,但是很轻量,还是挺不错的。 具体可以看我其他的文章。

总结

欢迎大家来看废话系列,因为我整个技术选择,完全就是无脑spring全家桶,我就是为了这个而做的这么多东西。