从零构建项目(Maven+SpringBoot

作为程序员,我最烦的就是搞各种环境配置和版本依赖的问题(真正的脏累活),虽然很多时候只用搞一次,但是感觉很多时候就真的如下图:

为什么项目结构是多模块?


我搭建了项目,取了个名字叫:austin,然后我在IDE上新建了几个Maven Module,目前分别是(后面可能还会新增):

  • common(基本信息->POJO/枚举配置)

  • support(Data获取->DB/Redis/Elasticsearch)

  • service-api(服务接口)

  • service-api-imp(服务接口实现)

  • web(HTTP接口)

最开始我们初学写代码的时候,可没那么讲究,直接在一个包下一把梭就完事了(:

后来,他们说要分包,不同模块的代码写到不同的包上。于是我们会在项目下新建对应包(其实就是文件夹),比如说dao/service/controller

而到现在,基本都是分模块了,不同职责的代码被分到对应的模块上。而austin直属下的pom文件就一般只用来管理依赖(把依赖和版本信息定义在父pom上,具体哪个子模块需要引入就好了)

mysql

mysql-connector-java

5.1.35

那么这种分模块又比以前分包好在哪里呢?

假设我们是分包的,那相当于所有的代码写到一个模块上。每次当我们修改时,我们需要重新编译整个模块(可能我只改了Dao包的某个实现类,但在编译的时候会把整个模块都编译一遍)。

如果是分模块的话,我们直接到模块下 mvn compile -Dmaven.test.skip=true 就完事了。

不过这只是一个方面,说服力好像也不太足。我认为最主要的是,我们分模块了以后可以复用

比如,现在我有austin这个项目,此时为了对数据进行处理,我需要去新建对应的Flink应用。可能受限于环境下,不会把flink相关的代码写在austin项目下

(这也只是举了个例子,我想表达的是:一个成熟的项目往往不只有一个Git地址就覆盖了整个功能。在绝大多数时候,不同的功能都会分开到不同的项目上)。

那不同的项目下,很有可能需要做的事情是有重复的(比如我都需要去读数据库获取数据)。那这时候,分模块的好处就体现出来了:可以直接引入对应的jar包(比如support包和common包)。

那就不用在两个不同的项目上,写一模一样的代码了(:能够共用一套代码

有没有小伙伴好奇为什么apiapi-impl是分了两个模块的吗?这里是为了:如果以后引入了RPC调用,那我们只需要提供api模块出去就好了,api模块的依赖一般很少。

(解决版本冲突是一件脏累活,人家嵌入你的SDK只是想用你的服务去获取对应信息,你别给人家整了一大堆毫无作用的依赖出来)

为什么GIT


到这里,项目的架子已经搭好了。我要把项目上传到Gitee跟大家愉快地玩耍(:

Git是一个版本控制工具。把austin被Git管理后,我每次提交的内容都会被看到(:这在多人协作中尤其重要

除此之外,有了“版本”的概念以后,用Git可以随意回退版本(有后悔药吃

我当时刚出来实习的时候,那家公司用的是SVN(我当时对版本控制工具理解其实是很模糊的,反正在我当时看来,就是把写好的代码上传到中央服务器,只不过它能对比出每次修改的异同)

后来以后,在公司接触都是Git了(现在开发基本离不开Git了,这玩意本身还是比较好学的,用起来还是挺爽的)

顺便发一波我日常用到的Git命令吧:

  1. git clone (克隆代码)

  2. git checkout -b (新建分支)

  3. git checkout (切换分支)

  4. git add / git commit /git push (这几步我基本都是在IDE上用快捷键完成,很少自己敲命令)

  5. git fetch (获取最新的修改信息)

  6. git merge (合并代码)

  7. git stash /git pop (有的时候临时会用,把代码放到暂存区中)

  8. git reset --hard (代码写烂了,直接回退吧)

一般Git我是一半用命令行,一半用IDE集成的工具。总的来说,怎么舒服怎么来(没有限定说一定要用命令行,我是自己怎么操作比较快就怎么搞)

对于这个项目而言,我这里使用到Git最大的原因就是:有远程的仓库装载我的代码,并且你们能看到(:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

image

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

image

互联网Java程序员面试必备问题解析及文档学习笔记

image

Java架构进阶视频解析合集
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
互联网Java程序员面试必备问题解析及文档学习笔记

[外链图片转存中…(img-Adni2qMO-1712756730842)]

Java架构进阶视频解析合集
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值