龙空技术网

SpringBoot进阶3:项目搭建方法与项目结构分析

服务端技术 438

前言:

目前小伙伴们对“spring boot项目结构”都比较注重,各位老铁们都想要剖析一些“spring boot项目结构”的相关资讯。那么小编同时在网摘上搜集了一些对于“spring boot项目结构””的相关资讯,希望大家能喜欢,兄弟们一起来学习一下吧!

1 SpringBoot项目的搭建方法1.1 从官网下载压缩包

SpringBoot 框架的主要目的是简化 Spring 应用的开发难度,所以在项目搭建方面,SpringBoot 开发团队也提供了很好的支持。我们只需要在 SpringBoot 官网:,进行简单定制之后下载项目的压缩包即可,其中该压缩包内的项目包含了标准的目录结构。然后在本地解压之后,将项目导入开发工具,如 eclipse 或者 Intellij IDEA,即可进入应用开发。

1.2 使用 IDEA 的工具

​ 除此之外,如果是使用 Intellij IDEA 作为开发工具,也可以使用 Intellij Idea 的 SpringBoot 框架插件 “Spring Initializer” 来搭建项目,该插件的工作原理也是通过从 SpringBoot 官网:,简单定制项目来实现的,插件位置如图所示:

1.3 搭建过程

如下将演示基于 SpringBoot 官网: 来搭建一个 SpringBoot 项目的过程:

访问 SpringBoot 官网:,页面如图所示:核心步骤为使用红色序号标注。

① Project 步骤主要选择项目所使用的包依赖管理工具,可以选择 maven 或者 gradle,默认为 maven。

② Language 步骤为选择 SpringBoot 项目的编程语言,可以选择 Java,Kotlin 或者 Groovy,默认为 Java 语言。

③ Spring Boot 步骤为选择当前项目需要的 SpringBoot 框架的版本,默认为当前的最新的稳定发布版本。

④ Project Metadata 步骤为配置当前项目对应的 jar 包的唯一标识和当前项目的开发目录的顶层包名,主要被包管理工具,如 maven 使用。包名主要用于在包仓库中唯一标识该项目,即 Group 和 Artifact,其中 Group 为项目组织的唯一标识符,该组织下可以包含多个项目,Artifact 为当前项目的唯一标识符,通过 Group 和 Artifact 唯一标识该项目。

除此之外,在 ④ 中还包含 Options 可选的配置项,点击 Options 如图所示:

可选的配置项包括:

(1)Name:项目打 jar 包对应的包名称 ;

(2)Description:项目的描述,即描述该项目的用途;

(3)Package Name:项目的开发目录的顶层包名,这个默认由 Project Metadata 的 Group 和 Artifact 组成,如以上配置的默认为:com.yzxie.demo,不过也可以自定义,如修改为:com.yzxie.study.demo,此时项目的开发目录的顶层包名就变为了这个名字,如下图所示:项目开发目录 main/java 的顶层包名变为了:com.yzxie.study.demo,而 maven 配置文件 pom.xml 的项目包的 group 和 artifactId 还是分别为:com.yzxie 和 demo。

(4)Packaging:项目的打包方式,默认为 jar 包,不过 SpringBoot 为了兼容基于 Tomcat 的项目部署方式,也支持打 war 包。(5)Java:指定当前项目所使用的 JDK 的版本,默认为 Java 8。

⑤ Dependencies 为添加项目的包依赖,即根据项目需要使用的第三方功能来添加对应的 jar 包依赖,如 SpringMVC,Redis等。如下图所示:由于当前项目是一个 Java Web 项目,故可以选择 SpringBoot 提供的 Spring Web Starter 包,该包提供了 SpringMVC,Java 的 servlet 组件等包,关于该 starter 包的更多内容在后续章节详细分析。

⑥ Generate the project 为生成并下载该项目的 zip 压缩包到本地,然后在本地解压并导入到开发工具,如 ecplise 或者 Intellij IDEA,如下为在 Intellij IDEA 打开该项目的完整项目结构视图:

2 SpringBoot项目结构分析

​ 由以上通过 Intellij IDEA 打开的完整项目视图可知,SpringBoot 项目主要由 java,resources 和 test 三个核心目录组成。

2.1 应用代码目录

​ java 目录为 SpringBoot 项目的应用代码目录,主要用于存放项目的 Java 代码。通过 Java 包 package 来对 Java 的相关类进行分类组织存放。如上图所示,项目的顶层包为:com.yzxie.study.demo,在该顶层包内包含 SpringBoot 框架的启动类 DemoApplication,其中 SpringBoot 框架生成该类的命名规则为:项目名称Name + Application ,关于该类的更多知识在后续章节详细分析。

拓展知识:

在进行业务开发时,可以在顶层包下面,根据类的业务特点来创建对应的子包,其中 SpringBoot 推崇的业务包命令规范如下:

controller:控制器,主要定义请求的 URI 和请求处理方法的映射关系;service:业务服务类,主要存放实现业务逻辑的类,如果存在接口定义,则在 service 目录维护接口,在该目录下进行创建 impl 目录来存放接口的实现类;repository:数据仓库访问和操作类,主要存放数据库或者Redis缓存的相关访问和操作类,该目录也可以命名为 dao;domain:业务实体类,对业务进行抽象得出的业务实体,如用户 User 类等;dto:数据传输类,这个与业务实体类类似,不过主要是提高数据传输对象的可读性,不需要与业务有强关联关系,解决了 Java 编程中常用的 JSONObject 或者 HashMap 存放数据可读性差的问题,即 “魔法数” 问题;config:项目配置类,主要存放基于 Java 类配置而非 XML 文件配置的配置类;constants:项目的公共常量类;utils:项目的公共工具类,如 HTTP 访问工具类。

2.2 配置目录

​ resources 目录为项目的应用配置目录,核心内容如图所示:

​ 默认情况下,该目录只存放了项目的应用参数配置文件 application.properties。不过由于在搭建这个项目时引入了 Spring Web Starter 这个包来集成 Java Web 的功能,故在该目录额外引入了 static 和 template 目录,其中static 是存放静态网页资源文件,template 是存放网页模板文件。

​ 对于应用参数配置文件 application.properties ,在内容方面主要需要结合当前项目所引入的 SpringBoot 的 starter 包的功能来进行相关配置。例如,引入了 Spring Web Starter ,则可以进行 Tomcat 的连接监听端口等的配置;引入了 Redis 的 starter 包则可以进行 Redis 相关的配置等。关于 SpringBoot 的项目配置和这个文件的配置内容的更多知识,我们会在之后章节会详细分析,敬请期待。

tips:服务端开发当中,我们需要重点关注的是应用参数配置文件 application.properties,SpringBoot 框架默认只有这一个配置文件,这个文件也可以使用一个 yaml 的格式的文件来替代,即 application.yaml。

2.3 测试目录

​ test 目录为 SpringBoot 项目的测试目录,主要用于存放项目的单元测试与集成测试的相关类。该目录的 package 包的目录结构与应用代码目录 java 的 package 包的目录结构是对应的,所以可以为每个 Java 类都创建一个对应的单元测试类,以及为项目创建一个集成测试类。

在包管理工具 maven 的项目构建生命周期中,在通过 “mvn compile" 命令编译项目之后,可以执行 maven 的测试命令 “ mvn test " 来在打包之前进行测试,此时该目录的每个测试类都会自动执行。

tips:在 SpringBoot 项目的打包过程中,需要注意结合这些测试类的相关设计来决定是否执行 maven 的测试阶段。因为如果在执行这个测试过程当中,存在某个单元测试类执行失败,则无法进行下一步的打包操作,导致打包失败 。特别是在正式环境打包部署时,需要检查是否存在会连接本地测试数据库的单元测试类,因为这个在线上环境肯定是会失败的,此时可以考虑省略 maven 的测试阶段。

3 总结

​ 在本节我们首先介绍了 SpringBoot 项目的搭建方法,具体包括在 SpringBoot 官网直接配置并下载压缩包到本地,然后解压、导入开发工具和通过流行的开发工具 Intellij IDEA 的 SpringBoot 搭建工具两种方式。这两种方式都会生成 SpringBoot 的标准代码目录结构,简化了 SpringBoot 项目的搭建难度。

​ 然后我们进一步介绍了 SpringBoot 项目的标准代码目录结构,分析了各个核心目录的作用。应用开发人员只需要在相应目录进行业务代码编写或者进行应用配置即可,实现了即插即用,提高了开发效率和降低了应用开发门槛。

标签: #spring boot项目结构