一篇文章带你了解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.hqwc.cn/news/290380.html

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

相关文章

【lesson20】MySQL复合查询(1)基本查询回顾、多表查询和自连接

文章目录 基本查询回顾建表插入数据实例 多表查询建表插入数据实例 自连接建表插入数据实例 基本查询回顾 建表 插入数据 实例 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降…

[论文分享]TimeDRL:多元时间序列的解纠缠表示学习

论文题目&#xff1a;TimeDRL: Disentangled Representation Learning for Multivariate Time-Series 论文地址&#xff1a;https://arxiv.org/abs/2312.04142 代码地址&#xff1a;暂无 关键要点&#xff1a;多元时间序列&#xff0c;自监督表征学习&#xff0c;分类和预测 摘…

基于红外传感的野外变压站生物入侵检测系统(论文+源码)

1. 系统设计 本课题为基于红外传感的野外变压站生物入侵检测系统&#xff0c;主要是针对野外变压站生物入侵的问题进行设计&#xff0c;整个系统的框图如图经过上述的功能需求分析和各个关键模块的选型后&#xff0c;最终得到了如图2.1所示的&#xff0c;采用STC89C52单片机为…

Linux中history使用(过滤,显示时间,查找)

显示历史命令 history 显示最后几条执行命令 history 5 显示history记录中命令执行时间 export HISTTIMEFORMAT"%F %T " 显示命令中有某些内容的最后几条执行命令 history | grep key | tail -n 2

适用于车载电动升窗器的解决方案

升窗器是指避免车主忘记关窗的自动关窗装置&#xff0c;主要通过电子模块加认组合&#xff0c;利用主机上的芯片里面设定的程序完成检测功能&#xff0c;使自动升窗步骤顺利完成。 ■ 基于ACM32F403系列MCU ■ 高性价比软件控制方案&#xff0c;高算力 ■ MCU内置2路CAN总线&a…

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

前言【Unity 实用工具篇】| I2 Localization 实现本地化及多种语言切换,快速上手一、多语言本地化插件 I2 Localization1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍三、通过示例快速上手3.1 添加 Languages语种3.2 添加 Term资源3.3 静

应用容器化转型 - 容器镜像怎么做

「执笔人」品高股份 cloud native 资深架构师&#xff1a;继承 随着云计算和容器技术的迅速发展&#xff0c;越来越多的企业选择进行应用容器化转型&#xff0c;以提高应用交付效率和灵活性。在这个转型过程中&#xff0c;制作高效的容器镜像成为关键一环。 那么什么是容器镜…

Jmeter分布式性能测试,80%资深测试都会遇到这个坑!

在做后端服务器性能测试中&#xff0c;我们会经常听到分布式。哪你&#xff0c;是否了解分布式呢&#xff1f;今天&#xff0c;我们就来给大家讲讲&#xff0c;在企业实战中&#xff0c;如何使用分布式进行性能测试&#xff0c;实战过程中&#xff0c;又有哪些地方要特别注意&a…

【NeRF】体渲染

文章目录 体渲染 (Volume Rendering)吸收 (absorbing)放射 (emission)外散射 (out-scattering)内散射 (in-scattering) 体渲染方程NeRF中的体渲染NeRF体渲染方程NeRF体渲染方程计算 参考 借用了 参考文章1的图片&#xff0c;侵删。 关于体渲染的知识&#xff0c;主要借鉴 参考…

SQL指南:掌握日期函数来查询和管理数据

文章目录 1. 引言2. 建立数据库表2.1 建表语句2.2 数据插入 查询案例3.1 查询当前日期的订单3.2 查询过去一周内的订单3.3 查询明天的日期3.4 查询今年的订单3.5 查询特定月份的订单 总结 1. 引言 在数据库管理中&#xff0c;处理日期和时间是一项基本但重要的任务。本指南将通…

python 普通存款(单利)计算公式:

python 普通存款&#xff08;单利&#xff09;计算公式&#xff1a; 代码如下&#xff1a; #普通存款 单利计算公式&#xff1a;a:原值&#xff0c;n:计算年限&#xff0c;li&#xff1a;利率&#xff08;小数&#xff09;, def danli(a,n,li):print("普通存款(单利)计…

应届毕业生如何一步步成为产品经理?

首先就是需要系统的学习产品经理的课程&#xff0c;然后再运用在工作中&#xff0c;积累经验&#xff1b;想从事产品经理还需要去考一个NPDP证书&#xff0c;这个证书是很多大厂的求职门槛了&#xff0c;感兴趣的可以了解下~ 一、什么是NPDP&#xff1f; NPDP 是产品经理国际资…