一篇文章带你了解SpringBoot目录结构

前言

SpringBoot是整合Spring技术栈的一站式框架,是简化Spring技术栈的快速开发脚手架,是一个能够快速构建生产级别的Spring应用的工具。SpringBoot是目前流行的微服务框架,倡导“约定优于配置”,简化Spring项目搭建及开发过程。springboot提供了很多核心的功能,比如自动化配置、starter简化maven配置、内嵌servlet容器、应用监控等功能。本文就来讲解SpringBoot项目的目录结构。

先看第一层目录

/.mvn    (这是 Maven Wrapper 的存放位置。Maven Wrapper 是一个包装器工具,用于在没有预先安装 Maven 的系统上运行 Maven 项目。它包含一个用于下载和安装特定 Maven 版本的脚本。如果删除这个文件夹会导致无法使用 Maven Wrapper 来自动下载和管理特定版本的 Maven。开发人员必须手动安装并配置全局的 Maven,或者使用其他构建工具来代替 Maven。)

/src    (项目的源码层,日常开发都在此目录下的进行)

/target     (放置编译后的.class文件、配置文件等、 target文件夹是用来存放项目构建后的文件和目录、jar包、war包、编译的class文件,都是maven构建时生成的。)

/.gitignore  ( Git 是一个版本控制系统,用于跟踪项目中的代码更改。.gitignore 文件用于指定应该被 Git 忽略的文件和目录,以防止它们被添加到版本控制中。这个文件通常包含一些自动生成的文件、编译输出、临时文件等。删除 .gitignore 文件可能会导致一些不应被版本控制的文件和目录被纳入版本控制中,例如编译输出、临时文件等。这会增加代码库的体积,使版本控制变得混乱。)

/HELP.md  (一个Markdown格式的文件,通常包含项目的帮助信息、说明和指南。这是一个包含项目帮助信息的 Markdown 文件。通常,这个文件会提供项目的概述、配置说明、运行指南等信息,方便其他开发人员了解和使用项目。删除 HELP.md 文件会使其他开发人员难以获取项目的相关信息,降低项目的可维护性和可理解性。项目的说明、配置指南等重要信息将不再可用。)

/mvnw   ( mvnw 是 Maven Wrapper 的可执行脚本文件。它是 Spring Boot 项目中常见的一个文件,用于简化构建和管理项目依赖的过程。Maven 是一个用于构建和管理 Java 项目的强大工具,它使用项目配置文件(pom.xml)来定义项目的结构、依赖和构建过程。然而,使用传统的 Maven 构建项目需要在本地环境中安装和配置 Maven 工具。

    为了简化项目的构建和管理过程,并确保项目在不同环境中的一致性,Spring Boot 引入了 Maven Wrapper。Maven Wrapper 是一个用于包装 Maven 的脚本和库文件的工具,可以将 Maven 包装在项目内部,不依赖于本地环境中是否已安装 Maven。

在 Spring Boot 项目中,mvnw 文件是 Maven Wrapper 的可执行脚本文件,它会根据项目中的配置自动下载和使用特定版本的 Maven。当你在项目目录下执行 mvnw 命令时,它会检查项目中是否已经存在所需的 Maven 版本,如果不存在,会自动下载并使用指定的 Maven 版本进行构建。

使用 Maven Wrapper 可以确保项目的构建过程独立于本地环境,并提供了更好的可移植性和项目的一致性。你只需要使用项目中提供的 mvnw 文件,无需手动安装和配置 Maven,就可以在任何环境中构建和管理项目。

这是 Maven Wrapper 的可执行脚本(Unix/Linux 系统)。它允许在没有全局 Maven 安装的情况下运行 Maven 项目。运行 mvnw 脚本会自动下载并使用指定版本的 Maven 来执行项目构建、测试等操作。

/mvnw.cmd  (这是 Maven Wrapper 的可执行脚本(Windows 系统)。与上面的 mvnw 脚本类似,它也允许在没有全局 Maven 安装的情况下运行 Maven 项目,但是用于 Windows 系统的命令行环境。删除这两个文件会导致无法使用 Maven Wrapper 运行 Maven 命令。开发人员将无法使用提供的脚本快速执行构建、测试和其他 Maven 相关操作。)

/pom.xml  (pom.xml是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等。在Spring Boot项目中,pom.xml文件也扮演着重要的角色。在pom.xml文件中,可以配置项目的资源文件。 在Spring Boot的pom.xml文件中,通常会有一个<resources>标签文件,用于指定资源文件的路径和名称 。)

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.17-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>11</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>2.3.1</version><scope>test</scope></dependency><!--        Swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><!--        Swagger-UI --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></pluginRepository><pluginRepository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></pluginRepository></pluginRepositories></project>

重点是src目录

 

|---/src/main

 |---|---/src/main/java:目录下放置所有的java文件(源代码)

 |---|---|---/src/main/java/com/example/demo :核心源码存放文件

|---|---|---/src/main/java/com/example/demo/controller :控制层

 |---|---|---/src/main/java/com/example/demo/service:业务代码层

 |---|---|---/src/main/java/com/example/demo/mapper:持久层

|---|---|---/src/main/java/com/example/demo/vo :通常用于与前端交互,封装前端调用某个接口之后所需的所有数据。在前后端分离的时代,VO主要应用于表示视图层的类。

|---|---|---/src/main/java/com/example/demo/dto :则主要应用于数据传输层,特别是在Controller层和Service层。在Controller层,DTO用于接收参数,无论是单个参数还是多个参数,都可以通过创建一个DTO对象来进行接收。使用DTO传参相比使用注解(@RequestParam等)具有更高的可读性和维护性。在Service层,处理复杂的逻辑后,将处理好的DTO进行copyBean即可无伤转换为持久化对象(Bo)。总的来说,VO和DTO都是为了实现程序中的数据传输和交互,但它们的使用场景不同。前端与后端交互时,使用VO;而在服务层之间传输数据时,使用DTO。

|---|---|---/src/main/java/com/example/demo/entity:存放实体类,与数据库表名和字段名对应

|---|---|---/src/main/java/com/example/demo/config:一些配置类,例如redis、swagger等配置信息

|---|---|---/src/main/java/com/example/demo/utils:一些工具类,例如时间格式化工具、加密工具、返回结果封装工具、文件上传工具等

|---|---/src/main/resource: 存放资源文件、如静态资源文件、配置文件、页面文件等

|---|---|---/src/main/resource/mapper:存放MyBatis操作数据库的xml文件

|---|---|---/src/main/resource/static:存放静态资源例如css样式、图片等

|---|---|---/src/main/resources/templates:存放模板文件如thymeleaf模板文件

|---|---|---/src/mian/resource/application.properties:: SpringBoot项目的配置文件,SpringBoot支持.properties和.yml文件

application.properties文件内容

#端口号配置
server.port=9099#数据源相关配置
spring.datasource.url=jdbc:mysql://localhost:3306/finshing?serverTimezone=UTC&&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.password=123456
spring.datasource.username=root#mybatis映射对应的实体类位置
mybatis.type-aliases-package=com.example.demo.entity#mybatis的映射xml文件路径位置
mybatis.mapper-locations=classpath:/mapper/*Mapper.xml#开启数据库下划线映射Java驼峰
mybatis.configuration.map-underscore-to-camel-case: truespring.mvc.view.prefix=/pages/
spring.mvc.view.suffix=.htmlspring.mvc.pathmatch.matching-strategy = ant_path_matcher# 配置上传文件大小限制
# 单个文件大小配置
spring.servlet.multipart.maxFileSize=30MB
# 请求总大小配置
spring.http.multipart.maxRequestSize = 30MB

|---/src/test  单元测试类java文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

速通Python基础语法--运算符篇

一、算术运算符 优先级&#xff1a; 除法的2个问题&#xff1a; 除零异常&#xff1a; 运行时才出现的错误&#xff0c;叫做“抛出异常” 如果程序运行过程中 抛出异常&#xff0c;程序就会直接终止&#xff0c;后面的代码不会执行。 除法的(不)截断问题&#xff1a; %取模/求…

宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问

文章目录 前言1.Mysql 服务安装2.创建数据库3.安装 cpolar3.2 创建 HTTP 隧道 4.远程连接5.固定 TCP 地址5.1 保留一个固定的公网 TCP 端口地址5.2 配置固定公网 TCP 端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了 Linux 命令行进行繁琐的配置,下面简单几步,通…

微信小程序使用--如何生成二维码

一、生成二维码 1.获取token 参照官方文档说明&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html 其中grant_type是写死的&#xff0c;appid和secret是注册小程序的时候获取的&#xff0c;然后会得到一个默认两小…

MyBatis-Plus全套笔记

一、MyBatis-Plus 1.简介 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 我们的愿景是成为 MyBatis 最好的搭档&…

c jpeg 理论霍夫曼 DC AC表,c程序实现正向逆向转换

此4张表是理论表&#xff0c;不是针对某张图片的特定表。如编码程序不统计生成某图片的专用霍夫曼表&#xff0c;应该也可用理论表代用编码。 1.亮度DC表 左边第一列是二进制位数&#xff0c;就是对此位数编码 中间一列是生成比特流的位数&#xff0c;右边是生成的比特流。 …

本地MinIO存储服务如何创建Buckets并实现公网访问上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…

Seata:打造行业首个分布式事务产品

作者&#xff1a;季敏&#xff0c;阿里云分布式事务产品负责人、Seata 开源项目创始人 微服务架构下数据一致性的挑战 微服务开发的痛点 在 2019 年&#xff0c;我们基于 Dubbo Ecosystem Meetup&#xff0c;收集了 2000 多份关于“在微服务架构&#xff0c;哪些核心问题是开…

SparkSQL的编程模型(DataFrame和DataSet)

1.2 SparkSQL的编程模型(DataFrame和DataSet) 1.2.1 编程模型简介 主要通过两种方式操作SparkSQL&#xff0c;一种就是SQL&#xff0c;另一种为DataFrame和Dataset。 SQL SQL不用多说&#xff0c;就和Hive操作一样&#xff0c;但是需要清楚一点的时候&#xff0c;SQL操作的是…

企业需要哪些数字化管理系统?

企业需要哪些数字化管理系统&#xff1f; ✅企业引进管理系统肯定是为了帮助整合和管理大量的数据&#xff0c;从而优化业务流程&#xff0c;提高工作效率和生产力。 ❌但是&#xff0c;如果各个系统之间不互通、无法互相关联数据的话&#xff0c;反而会增加工作量和时间成本…

【递归 回溯】LeetCode-226. 翻转二叉树

226. 翻转二叉树。 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#xf…

写给测试同学的福利 | 招募

一、简介 寻找空闲时间有能力进行有偿协助测试的人员&#xff0c;协助大厂产品进行测试优化产品工作 二、要求 1.安卓设备2.具备熟练使用手机的能力 三、你可以得到 1.优先体验相关产品新功能、了解产品走向2.任务有偿&#xff1a;每次任务5-30米 四、需要了解事项 1.嫌…

生于越南,“开源改变了我的人生!”

注&#xff1a;本文精选自《新程序员 007&#xff1a;大模型时代的开发者》&#xff0c;欢迎点击订购。 作者 | 王启隆 责编 | 唐小引 出品 | 《新程序员》编辑部 随着人工智能浪潮的席卷&#xff0c;开源不再仅仅是计算机领域的一个话题&#xff0c;而是成为推动技术创新…

让测试效率起飞的8款浏览器兼容性测试工具,你get了吗?

浏览器的兼容性问题&#xff0c;是指不同浏览器使用内核及所支持的 HTML 等网页语言标准不同&#xff0c;用户客户端的环境不同造成的显示效果不能达到理想效果。 对于用户而言&#xff0c;无论使用哪款浏览器&#xff0c;期望看到的效果是正常的统一的。市面上发布的浏览器版本…

JVS低代码和智能BI(自助式数据分析)12.19更新功能说明

低代码更新功能 新增: 1、表单组件&#xff1a;标题、分割线、按钮等非数据组件增加小程序端隐藏设置&#xff1b; 隐藏设置允许开发者对表单组件中的非数据组件进行隐藏&#xff0c;例如&#xff0c;可能只想展示表单的部分内容&#xff0c;或者希望在特定条件下显示或隐藏…

<JavaEE> 网络编程 -- 网络编程和 Socket 套接字

目录 一、网络编程的概念 1&#xff09;什么是网络编程&#xff1f; 2&#xff09;网络编程中的基本概念 1> 收发端 2> 请求和响应 3> 客户端和服务端 二、Socket套接字 1&#xff09;什么是“套接字”&#xff1f; 2&#xff09;Socket套接字的概念 3&…

整数比较(比较4个数并从小到大输出)C语言xdoj94

描述&#xff1a; 从键盘输入四个整数&#xff0c;要求按由小到大的顺序输出。 输入说明&#xff1a; 输入四个整数&#xff0c;以空格间隔。 输出说明&#xff1a; 输出排序后的整数&#xff0c;以空格间隔。 输入样例 样例1输入 -99 9 99 -9 输出样例 样例1输出 -99 -9 9 99 …

关于“Python”的核心知识点整理大全32

目录 12.6.4 调整飞船的速度 settings.py ship.py alien_invasion.py 12.6.5 限制飞船的活动范围 ship.py 12.6.6 重构 check_events() game_functions.py 12.7 简单回顾 12.7.1 alien_invasion.py 12.7.2 settings.py 12.7.3 game_functions.py 12.7.4 ship.py …

JavaGUI(但期末速成版)之JFrame和JDialog

前言 学到期末发现越来越没时间来细写这些东西了&#xff0c;毕竟蒟蒻博主的发展方向主要需要学的不是Java&#xff0c;但为了期末高分通过&#xff0c;也不得不花一些精力上来&#xff0c;于是有了这样一篇速成GUI&#xff0c;本篇会以十分精简的语言来学习&#xff0c;主打一…

CN3302 PFM升压型双节电池充电控制集成电路外置MOS管 双节锂电池充电IC

CN3302是一款工作于2.7V到6.5V的PFM升压型双节鲤电池充电控制集成电路。CN3302采用恒流和准恒压模式(Quasi-CVTM)对电池进行充电管理&#xff0c;内部集成有基准电压源&#xff0c;电感电流检测单元&#xff0c;电池电压检测电路和片外场效应品体管驱动电路等&#xff0c;具有外…

企业网络常用技术-快速生成树RSTP原理与配置

STP协议虽然能够解决环路问题&#xff0c;但是收敛速度慢&#xff0c;影响了用户通信质量。如果STP网络的拓扑结构频繁变化&#xff0c;网络也会频繁失去连通性&#xff0c;从而导致用户通信频繁中断。IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP&#xff08;Rapid …