从本章开始就正式进入开发项目阶段,首先需要搭建一个基础项目的Spring Boot服务,然后考虑项目基础技术的选型及项目的管理等工作。
打开spring initializr创建项目的界面,然后选择项目结构为Maven项目;开发语言为Java;Spring Boot的版本为3.1.3(如果页面没有该版本,则可以选择3.0以上的其他版本,创建完成后再修改pom文件中的版本号);项目组织为com.library;项目名为library;打包方式为JAR包形式;Java版本选择17。填写完成后,如果单击的GENERATE按钮,则会自动生成并下载Spring Boot项目。本书的项目以library命名,如图4-1所示。
图4-1 在线创建Spring Boot项目
将项目以压缩包的形式下载到本地,解压下载的项目文件,并使用IDEA开发工具打开项目。在IDEA中选择File→Open选项,然后选择解压后的项目文件,单击OK按钮,这样就可以成功地将项目导入IDEA中,如图4-2所示。
项目导入成功后,在IDEA的左侧导航栏中就可以看到生成的Spring Boot项目的目录。展开项目目录,将一些不用的文件删除,保持项目目录的整洁,下图中框起来的目录文件都可以删除,如图4-3所示。
图4-2 IDEA导入Spring Boot项目
图4-3 Spring Boot项目目录
项目目录结构解释如下:
(1).idea文件用于存放项目的一些配置信息,包括数据源、类库、项目字符编码、版本控制、历史记录信息等。
(2)src文件主要用于存放Java项目的代码,所有的代码都在这里编写,包含启动类、测试类及项目的配置文件等。
(3).gitignore分布式版本控制系统Git的配置文件,其作用是忽略提交在.gitignore中的文件,在添加忽略的文件时要遵循相应的语法规范,即在每行指定一个忽略的规则。例如.idea、target/等。
(4)pom.xml是Maven进行工作的主要配置文件,在该文件中可以配置Maven项目的groupId、artifactId和version等Maven项目的元素。同时可以定义Maven项目打包的形式;可以定义Maven项目的资源依赖关系等。
由于Maven源文件的默认配置路径为当前用户目录下的.m2/settings.xml,所以现在需要将项目的默认Maven仓库切换至搭建好的本地仓库。在3.3节中,已经在本地搭建好了Maven仓库,那如何来修改Maven配置呢?在IDEA中选择File→Settings选项,如图4-4所示。
图4-4 打开项目配置
选择Build,Execution,Deployment选项进行展开,然后展开Build Tools→Maven选项进入IDEA Maven配置界面,如图4-5所示。
图4-5 项目Maven默认配置
将Maven默认的路径修改为自定义的本地仓库,User settings file为配置Maven源文件的配置路径,Local repository为配置本地仓库路径,修改完成后,先单击Apply按钮,应用后再单击OK按钮,配置成功,如图4-6所示。
等待项目依赖加载完成。在后边的项目开发中,如果需要修改pom.xml,则要在修改完成后刷新一下Maven,IDEA将会下载或更新相应的依赖包,如图4-7所示。
图4-6 项目Maven配置
图4-7 刷新项目Maven配置
在src/main/resources目录下存放项目的配置文件,默认为application.properties文件格式,项目采用的是YAML语法来编写配置文件,这里需要将properties后缀换成yml的格式。
项目为什么要改成yml格式的配置文件呢?
(1)首先在Spring Boot项目中,使用.properties和.yml配置是等效的,它们都可以被识别和使用。
(2)yml可以更好地配置多种数据类型,支持多种语言,通用性更好,并且yml的基本语法格式是key:value,properties的基本语法格式是key=value。
(3)使用人数多,大多数企业项目使用的是yml格式的配置文件。
YAML的解析相对于properties更加严格,在配置文件中不要出现错误的语法,以及一些不应该出现的字符或者空格等,这都会导致解析失败。如果直接复制、粘贴整个配置文件的代码,则会出现乱码的问题。先来体验一下该配置文件,在application.yml文件中添加项目的名称library和端口号8081,如图4-8所示,添加配置的代码如下:
图4-8 添加项目端口号
经过前面章节的项目配置,目前已经做好了项目启动的准备工作,现在只需引入spring-boot-starter-web依赖,便可以启动项目。Spring Boot通过该依赖提供了对Spring MVC的自动配置,并在原有的Spring MVC的基础上增加了许多特性,支持静态资源和WebJars等。
在Spring Boot项目的pom.xml配置文件中引入spring-boot-starter-web依赖,即使不进行任何配置,也可以直接使用Spring MVC进行Web开发,代码如下:
添加完成后,刷新项目的Maven,然后单击IDEA右上角的绿色三角号按钮或单击类似于小虫子的绿色图标以Debug的形式启动,这个在开发项目进行调试代码时经常使用,接着等待项目启动,如图4-9所示。
图4-9 启动项目
等待项目启动完成。检查控制台的日志打印信息,如果出现Tomcat started on port(s):8081(http)with context path及Started Library Application in…输出信息,则说明项目已经启动成功,搭建开发环境成功,如图4-10所示。
图4-10 项目启动成功日志
代码仓库在整个项目的开发过程中具有不可或缺的重要性,它承担着存储和管理项目源代码及版本控制的关键任务。特别是在团队协作开发中,代码仓库能够详细地记录每个代码版本的变更历史和开发者的提交记录。
目前,企业常用的代码仓库主要包括GitLab、Gitee企业版和GitHub。虽然GitLab作为一个自托管的Git项目仓库在企业中广泛使用,但其需要搭建自己的仓库环境,可能涉及资源和配置等问题,因此本书暂不以GitLab为例。考虑到GitHub服务器位于国外,国内网络访问速度可能较慢,因此在本项目中也不考虑使用GitHub。
综合考虑各方面因素,本项目选择了国内的Gitee作为代码托管仓库。Gitee不仅提供免费的代码托管服务,而且访问速度较快,基本可以满足本项目的开发需求。这个选择能够更好地支持项目开发和团队协作。
之所以选择代码仓库管理主要从以下几方面考虑。
(1)版本管理:代码仓库允许保存项目的各个版本。如果代码有问题,则可以轻松地回退到之前的版本,进行错误处理。
(2)协作开发:多人团队可以同时在同一个代码仓库中工作,每个开发者都可以创建分支进行独立开发,然后合并到主分支。
(3)备份和恢复:代码仓库作为一个中央存储库,能够帮助开发者备份项目代码,以防止数据丢失。
(4)变更历史:每次代码提交都会被记录下来,包括谁做了什么修改。这种变更历史对于问题追踪、代码审查及理解项目演变过程非常重要。
(5)分支管理:代码仓库支持创建分支,可以在分支上开发新功能,而不会影响主分支的稳定性。
打开Gitee官网https://gitee.com,进入Gitee首页,如图4-11所示。
图4-11 Gitee官网首页
在登录的状态下,单击右上角的加号按钮,单击“新建仓库”选项,如图4-12所示。
图4-12 新建仓库
在创建新建仓库的页面中填写生成仓库的信息,例如仓库名称、仓库路径、是否开源等信息。信息添加完成后,单击“创建”按钮,新建仓库成功,如图4-13所示。
图4-13 填写仓库信息
然后可以在仓库管理界面中查看创建的项目仓库,如图4-14所示。
图4-14 项目仓库
在项目代码版本管理中,分支(Branch)是从主线代码独立出来的开发路径。分支的创建允许开发者在独立环境中进行开发、测试和修改,而不对主线代码造成影响。每个分支都代表着代码仓库的一个独立副本,开发者可以在其上进行修改,而这些修改不会直接影响主线代码。
目前有一个master分支作为主分支,还需要再创建一个dev开发分支,进入创建的仓库中,在分支管理中单击“管理”按钮,如图4-15所示。
图4-15 分支管理
进入分支管理界面,在右上角单击“新建分支”按钮,然后填写需要添加的分支名称、选择分支起点和设置分支权限等,如图4-16所示。
图4-16 创建dev开发分支
分支创建完成之后,要重新分配仓库分支权限。分配规则为master的分支只能由仓库管理员修改,其余的仓库人员没有权限修改。对于dev分支所有的开发人员都可以进行代码提交、合并请求等操作。
打开仓库管理,找到保护分支设置,先将dev分支设置为仓库的默认分支,然后单击“新建规则”按钮,如图4-17所示。
图4-17 设置dev默认分支
规则限制master分支的推送、合并等操作。填写完信息后,单击“保存”按钮,保存成功,如图4-18所示。
图4-18 创建保护分支
在此阶段,项目代码仓库已基本搭建完成。在以后的开发过程中代码提交将集中在dev分支上,等功能模块完成之后逐步合并到master分支上。这种方式有助于保障代码的安全性,确保已经开发完成的代码不会被随意更改,同时也为团队协作提供了适当的隔离。
代码版本管理在软件开发中是至关重要的实践之一,它促进了团队协作、变更追踪及不同代码版本的管理。通过代码版本管理工具,开发团队能够高效合作,确保代码的稳定性和可追溯性。
常见的版本控制系统包括分布式版本控制系统(如Git)和集中式版本控制系统(如SVN)。在本项目中,选择Git作为版本控制工具,这主要因为它具备卓越的性能和丰富的功能,因而受到广泛欢迎。Git可以在本地完整地存储代码仓库,并支持分支、合并、提交等功能,从而有效地支持团队协作开发。
打开官方网址https://git-scm.com/download/,下载的Git版本为Git 2.42.0(创作本书时的最新版本)。根据自己计算机的配置下载并安装包,如果官方网站的下载速度比较慢,则推荐使用国内的镜像网址https://npm.taobao.org/mirrors/git-for-windows/进行下载,如图4-19所示。
图4-19 Git下载界面
双击下载的安装包,根据安装导向进行安装,单击Next按钮,如图4-20所示。
图4-20 Git安装页面
选择安装的目录,可以使用默认目录或者自定义,这里推荐安装到系统盘以外的硬盘上,例如,笔者选择安装在D:\softwareTool\Git\Git目录下,然后单击Next按钮,如图4-21所示。
图4-21 Git自定义安装目录
依次单击Next按钮,直到安装完成。回到桌面后右击鼠标。在快捷菜单中会出现Open Git GUI here和Open Git Bash here两个菜单选项,如图4-22所示。
单击Open Git Bash here选项,在Git命令行窗口输入git version命令,如果出现Git的版本信息,则说明已经安装成功,如图4-23所示。
图4-22 Git快捷菜单
图4-23 Git版本信息
Git提供了一个叫作git config的工具,专门用来配置或读取相应的工作环境变量。这些环境变量决定了Git在各个环节的具体工作方式和行为。接下来需要配置个人的用户名和电子邮件地址。如果在执行配置命令时使用了--global选项,则所做的配置更改将被应用于用户主目录下的配置文件,这将导致以后的所有项目都默认使用这里配置的用户信息。然而,如果只想针对某个特定项目使用不同的用户名或电子邮件地址,则只需省略--global选项,然后重新执行修改后的命令。这样,配置更改将只适用于当前项目,而不会影响全局设置,命令如下。
配置执行完成后,执行以下命令来查看配置的用户名和邮件:
到目前为止,已经成功创建了代码仓库,并完成了Git的相关配置。接下来,重点是如何通过Git将本地的代码提交到Gitee远程仓库中。同时还要了解如何从远程仓库将代码拉取到本地,大致流程如图4-24所示。
打开library项目根目录,右击空白处打开Git命令行窗口,然后初始化本地环境,把该项目变成可被Git管理的仓库,命令如下:
图4-24 代码提交流程
执行完该命令后,查看项目的根目录文件中是否多了一个.git目录,该目录包含资源的所有元数据,其他的项目目录保持不变,如图4-25所示。
图4-25 初始化本地仓库
初始化完成后,接下来要将本地代码库与远程代码块相关联。打开Gitee上创建的仓库,单击“克隆/下载”按钮,在HTTPS中,单击“复制”按钮,此时仓库地址就复制下来了,如图4-26所示。
图4-26 复制Gitee仓库地址
在项目根目录下打开Git命令行窗口,将下方命令中的远程仓库地址换成前面获得的仓库地址,命令如下:
执行完命令后,就可以与远程的Gitee仓库建立连接了,同时可以对代码进行版本追踪和协作开发。先来将远程仓库的master分支拉取过来并和本地的当前分支进行合并,命令如下:
本地和远程仓库都已配置好,准备将代码提交到远程仓库,先来查看当前项目的远程仓库,可以使用以下命令。
执行完此命令后,输出的内容就是代码要提交的仓库地址,将当前项目的文件添加到git暂存区,执行git add.命令,注意后边是空格加点符号,命令如下:
然后将暂存区内容添加到仓库中,执行git commit-m'提交信息说明'命令,这里的说明最好是对提交代码的解释或说明等信息,命令如下:
等待提交完成,然后执行git push origin master命令上传远程代码并合并到master分支上,命令如下:
执行完命令,查看Gitee代码仓库页面,可以看到有代码被提交到仓库中了,说明本地和远程仓库已经连接成功,并可以将代码提交到远程仓库,如图4-27所示。
图4-27 提交远程仓库
使用IDEA打开项目,右上角有3个Git操作的图标,分别是更新代码、提交代码、推送代码操作,如图4-28所示。
图4-28 IDEA整合Git
当代码被提交到仓库后,在IDEA的左下角有一个Git选项,单击Git,选择Log日志,可以查看当前和过往的提交记录,方便代码的维护和代码回滚,如图4-29所示。
图4-29 代码提交记录
在实际开发中,使用IDEA的代码暂存区功能非常常见。在大多数项目中,迭代开发是常态,因此在开发过程中往往会有切换分支的需求。这时如果正在dev分支上开发代码,但尚未完成,则需要紧急切换到test分支处理Bug,为了防止在切换分支时意外丢失已编写的代码,可以使用暂存区功能。
在IDEA导航栏中,找到Git菜单,然后选择Uncommitted Changes→Stash Changes选项,如图4-30所示。
填写完Message信息后,单击Create Stash按钮,如图4-31所示。
读取暂存区的代码选择Uncommitted Changes→Unstash Changes选项,选择暂存区所存的代码信息,单击Apply Stash按钮,如图4-32所示。
图4-30 代码暂存区
图4-31 添加代码暂存区
图4-32 读取暂存区代码
本章主要介绍了如何在线创建基于Spring Boot项目的步骤。同时,通过Gitee作为远程仓库管理工具,演示了项目的代码托管过程。还引入了代码仓库的分支管理策略,强调了分支在团队协作中的重要性。此外,还详细介绍了如何使用Git工具将代码变更提交至远程仓库,并结合IDEA集成开发环境进行了实际操作演示。
在本项目中,还将深入了解更多关于Git工具的使用方法,从而更好地支持项目的开发和管理。这些实际操作的指导会使读者更熟悉项目开发的整个流程,真实地感受团队开发协作的过程。