接下来我们将要完成一个基础的 Springboot 项目的创建,并且将项目上传到
Gitee
1. 查看官网,选择版本
学习任何一门技术,一定要学会从官网了解一手信息,无论是哪个博主的博客都是有时效性的,我们要掌握这样的习惯,看懂看不懂另说,起码知道从哪里去找。
spring官网地址
:https://spring.io/
可以看到截至 2024.8.8 号,当前发布的最新稳定
GA
版本为3.3.3
,但是这里我不选择最新版本,原因是后续可能会改造成微服务项目,当前SpringCloud Alibaba
适配的最新SpringBoot
版本才到3.2.4
,这里可以查看 https://sca.aliyun.com/docs/2023/overview/version-explain/,所以我这里选择3.2.4
版本说明:
这里简单介绍一下各个版本后面的版本号,以及
GA
代表什么意思。
大多数软件在开发过程中都会有一个生命周期,从开发到测试,最后到上线,以及后续的维护。
- 开发阶段:Development 开发阶段,一般不对外暴露
- Alpha:Alpha 内测阶段,通常包含了基础功能,但是可能存在很多已知的问题,需要解决,一般供团队内成员使用。
- Beta: Beta 相对稳定的版本,一般为已经完成大部分功能,并且经过了一定程度的测试,一般会公开给外部测试人员或者志愿者使用,收集一些反馈
- Release Candidate: RC 候选发布版本,最近就正式版本的一个版本,如果没有大问题基本确定可以作为正式版本发布。会在内部或者选定的小范围内进行测试,确保最终是否符合上线标准。
- General Availbility: GA 这就是我们上面提到的
GA
版本或者有的也定义为Final
版本,是正式发布的版本,意味着软件已经通过所有测试,并且认为足够稳定,可以提供给所有用户使用了。- Maintenance: 发布
GA
版本后,可能会有若干个小版本来修复发现的一些小错误,这些版本通常被称为点版本(例如 1.0.1,1.0.2 等)。- Path: Patch 版本用于修复紧急安全漏洞或者其他严重问题,一般比较少见
- Snapshot: Snapshot 版本指的是正式版某个版本的一个快照版本,这些版本通常包含了最新的更改和特性,但也可能不稳定
- End of Life :EOL 当软件不再受到支持,会宣布其生命终结,这意味着将不再维护更新。
一般版本号都是由三位数字组成,
<major>.<minor>.<patch>
- Major (主版本): 当做出不兼容的 API 修改时增加此数字。
- Minor (次版本): 当添加向后兼容的功能时增加此数字。
- Patch (修订版本): 当修复向后兼容的 bug 时增加此数字。
2. 创建项目
这里我选择使用
3.2.4
作为最终版本, 当然你也可以选择当前最新的,对于当前的单体项目来说,几乎没有任何区别。这里点击3.2.x
版本的文档 https://docs.spring.io/spring-boot/docs/3.2.9/reference/html/getting-started.html#getting-started
可以看到这里对于一些版本的说明,最低要求
JDK17
Maven 3.6.3 +
接下来我们可以大致浏览一下,其实官网的文档写的很详细,有教你怎么下载maven
如何创建一个SpringBoot
项目,运行,打包等等。而且介绍了各个环境下的不同安装方式。这里我基于IntelliJ IDEA
给大家演示快速创建一个SpringBoot
项目。
2.1. 项目介绍
先简单介绍一下我们的项目组织结构,这个在我过去开发中碰到过很多种,各有各的特色,大致有以下几种。
第一种:单体架构,不拆分模块
这种方式的优势就在于,简单快速,适合一些比较简单的小项目。
第二种:单体项目,进行模块划分
根据业务模块进行抽离,将不同职责的业务,划分进不同的模块中,相比于前一种,相当于把原先通过文件夹划分职责改成了,通过模块划分,这样做的好处就是,项目结构更清晰了,可以做到更进一步的控制,比如不同模块使用特定的版本等,但是项目的复杂度也一定程度上增加了。这种方式切换为微服务版本时,改动起来会更加方便一点。
这里我会选择第二种方式完成项目开发,其实选择每种方式都可以,没有好坏之分,适合自己的就是好的。我刚开始写项目的时候也经常会纠结这些细枝末节的东西,比如项目名称怎么命名,变量怎么命名,
mvc
怎么分层,包怎么划分,后来发现这些除了给你带来毫无意义的内耗意外,对项目没有任何影响,只会拖慢你的项目进度,以及打击你的热情。所以,大家一定要知道什么才是重点,先把项目搭起来,业务跑起来,所有的这些细节可以在后续优化中一点点改进,有些东西等到你用到的时候,自然会发现怎么样去设计会更合适,更有利于自己完成项目的开发。
项目结构大致如下
2.2. 新建项目
打开
idea
找到 【New Project】
如果你的打开的时候不是这个界面,可以在这里创建新项目
之后就都是一样的了。
填好必要的信息,点击 【Create】
创建完成后,我们得到这样一个项目
这个将作为我们的根目录,也就是父依赖,将
src
删除掉,留下pom
用来管理依赖的版本。
修改
pom.xml
添加官方提供的springboot-start
依赖,之后使用官方整合的包的时候将不用再指定版本,这样做的好处就是不容易出现版本冲突的问题。将自动生成的版本改成1.0.0-DEV
,当然你也可以不改,只是个人习惯,没任何影响。
这里在父工程里还引用了lombok
的依赖,这样后续所有模块将会自动继承引用。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zz</groupId>
<artifactId>zz-admin-springboot</artifactId>
<version>1.0.0-DEV</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>3.2.4</spring-boot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
创建业务模块 【选择文件夹】> 【New】> 【Module】
填好必要信息,点击【Create】
如果你通过这种方式创建,你会发现,父
pom
里自动生成了模块声明
按照相同方式创建出
zz-module
这个是用来存放业务模块的。删除src
,这个也是个父工程,在下面创建具体的业务模块zz-admin
最终项目结构如下
你可能会有疑问,为什么这里要再弄一个
zz-module
,为什么不直接将zz-admin
放在外面同zz-common
同级,你的想法是对的,那样确实可以,而且结构更加简单明了,我这么做是因为,我希望将所有核心业务放在一个路径下管理,并且可以集中引用一些公共依赖。正如我前面提的,没有好坏适合自己的最好。
2.3. 引入web开发依赖
在
zz-admin
的pom
里,引入web
依赖
<dependencies>
<!-- web 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
创建启动类
@SpringBootApplication
public class ZZAdminApplication {
public static void main(String[] args) {
SpringApplication.run(ZZAdminApplication.class, args);
}
}
创建
application.yaml
server:
port: 8000
运行项目,可以看到,符合预期,在
8000
端口运行起来了
到这里,我们的项目算是初始化完成了。
3. 提交代码到码云,方便管理
方便代码维护管理,将代码上次至码云。
码云地址:https://gitee.com
注册账号,登录上去。
新增仓库
填好仓库名称
勾选分支模型,其它什么都别选,这样能保证我们的仓库最干净,不然会生成一些其它文件。
然后你会看到这样的界面
找到项目根目录,进入 git bash
按顺序执行以下命令
git config --global user.name "曹申阳"
git config --global user.email "[email protected]"
git init
git add .
git commit -m "项目初始化"
git remote add origin https://gitee.com/xxxxx
git push -u origin "master"
这个时候刷新一下 gitee
页面,即可看到提交记录了。
根据提示,你也可以添加一下自己的开源许可协议。通过网站直接添加,注意本地要拉取一下提交的协议。