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

这篇具有很好参考价值的文章主要介绍了一篇文章带你了解SpringBoot目录结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

springboot src,spring boot,后端,java

先看第一层目录

springboot src,spring boot,后端,java

/.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目录

 springboot src,spring boot,后端,java

|---/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: true

spring.mvc.view.prefix=/pages/
spring.mvc.view.suffix=.html

spring.mvc.pathmatch.matching-strategy = ant_path_matcher

# 配置上传文件大小限制
# 单个文件大小配置
spring.servlet.multipart.maxFileSize=30MB
# 请求总大小配置
spring.http.multipart.maxRequestSize = 30MB

|---/src/test  单元测试类java文件文章来源地址https://www.toymoban.com/news/detail-843149.html

到了这里,关于一篇文章带你了解SpringBoot目录结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇文章带你了解-selenium工作原理详解

    前言 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。 主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得

    2024年02月10日
    浏览(49)
  • 一篇文章带你详细了解axios的封装

    对请求的封装在实际项目中是十分必要的,它可以让我们统一处理 http 请求。比如做一些拦截,处理一些错误等。本篇文章将详细介绍如何封装 axios 请求,具体实现的功能如下 基本配置 配置默认请求地址,超时等 请求拦截 拦截 request 请求,处理一些发送请求之前做的处理,譬如给

    2024年02月07日
    浏览(58)
  • 【C++】一篇文章带你深入了解list

    list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 list与forward_list非常相似:最主要的不同在

    2024年04月23日
    浏览(51)
  • 一篇文章带你了解 什么是u(ustd)带你了解他的前世今生

    在数字货币的繁荣世界中,USDT无疑是其中一位重要的角色。它的前世今生,是一个从无到有,从小到大,经历了种种波折和争议的故事。 2014年11月下旬,一个名为Realcoin的注册地为马恩岛和香港的公司决定改变自己的名字,取名为Tether。这个决定预示着一种新的数字货币即将

    2024年01月23日
    浏览(46)
  • 【网络安全】一篇文章带你了解CTF那些事儿

    CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。已经成为全球范围网络安全圈流行的竞赛形式,2013年全

    2024年02月08日
    浏览(55)
  • WAF是什么?一篇文章带你全面了解WAF

    Web应用程序防火墙(Web Application Firewall,WAF)是一种用于保护Web应用程序的安全设备。Web应用程序是指通过Web浏览器或其他Web客户端访问的应用程序。WAF的目的是保护Web应用程序免受黑客、网络攻击和数据泄漏等安全威胁的攻击。 在这篇文章中,我们将深入探讨WAF的工作原理

    2024年02月10日
    浏览(42)
  • 【云原生】什么是云原生?如何学习云原生?一篇文章带你了解云原生

    云原生,相信这个名词大家并不陌生;云原生在近期可谓是爆火,伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生,云原生很火,火得一塌糊涂。可是现在很多人还是不知道什么是云原生,所以今天我们就来聊一聊近期很火的这个名词:云原生吧 。 大家平时经常提

    2024年02月02日
    浏览(51)
  • 一篇文章带你了解什么是云计算,SaaS PaaS IaaS的区别

    目录 一、本地部署 vs 云计算 弹性 运维成本 数据安全 二、SaaS PaaS IaaS的区别 在了解云计算之前,我们先要了解什么是“计算”,支撑计算我们需要硬件基础设施和软件环境。 硬件包括服务器、存储、网络等...  软件环境包括数据库、中间件、操作系统等... 云就是个地理概

    2024年04月27日
    浏览(51)
  • 一篇文章带你了解抖音来客功能的使用方法和注意事项

    抖音是近年来备受欢迎的社交媒体平台之一,其中的“来客”功能更是让许多人喜爱。那么什么是抖音来客呢?抖音来客是指在直播过程中,可以邀请其他抖音用户进行互动和参与,从而增加直播的热度和粉丝数量。下面不若与众科技就来介绍一下抖音来客的具体使用方法和

    2024年02月08日
    浏览(54)
  • 【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题

    博主: 東方幻想郷 专栏分类: Java | 从入门到入坟 🌟递归是一种在方法通过 调用自身 来解决某些问题的技术,它可以将一些问题,分为更小,更细类似的子问题,逐步解决, 直到问题被简化到某个基本情况 ,最后可以直接拿到答案。 递归是一种函数调用自身的方法 递归

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包