✨Spring Boot 项目结构解析?你难道不了解它?

举报
bug菌 发表于 2025/02/25 16:28:03 2025/02/25
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏,手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8 🧩 Spring Boot 项目结构解析如果你刚接触Spring Boot,可能会...

🏆本文收录于「滚雪球学SpringBoot」专栏,手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

🧩 Spring Boot 项目结构解析

如果你刚接触Spring Boot,可能会对项目的目录结构感到有些迷茫,尤其是当你第一次打开项目时,可能看到一大堆文件夹、配置文件、类和依赖。别急,我们一起来拆解一下这个项目结构,让你像拆积木一样清晰地理解每一个文件和目录的用途。💡

了解了Spring Boot项目的目录结构后,你将能够更加高效地开发应用,并且在日后的维护和扩展中能够快速找到自己需要的文件。准备好了吗?我们一起来看看吧!

🏗️ 1. Spring Boot 项目目录结构解析

Spring Boot遵循一种标准化的项目结构,这种结构能够帮助开发者迅速理解和定位文件的作用。以下是一个典型的Spring Boot项目的结构示例:

my-springboot-app/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               ├── DemoApplication.java       # 主应用类
│   │   │               ├── controller/               # 控制器包
│   │   │               │   └── HelloController.java  # 控制器类
│   │   │               ├── service/                  # 服务包
│   │   │               │   └── HelloService.java     # 服务类
│   │   │               └── model/                    # 实体类包
│   │   │                   └── Greeting.java         # 实体类
│   │   ├── resources/
│   │   │   ├── application.properties  # 配置文件
│   │   │   ├── static/   # 存放静态资源(如JSCSS,图片等)
│   │   │   └── templates/  # 存放模板文件(如Thymeleaf模板)
├── pom.xml  # Maven构建文件(或build.gradle)
└── README.md  # 项目说明

1.1 src/main/java/com/example/demo/

  • DemoApplication.java:这是Spring Boot应用的启动类,通常也是唯一的main方法所在的地方。@SpringBootApplication注解标识这个类是Spring Boot的核心配置类,SpringApplication.run()方法会启动整个应用,加载Spring应用上下文并启动内嵌的Web服务器。Spring Boot通过它来启动和运行整个应用。
  • controller/:在这个文件夹中,我们通常会放置一些处理HTTP请求的控制器类(例如:HelloController.java)。这些控制器类会使用@RestController@Controller注解,负责处理请求并返回相应的结果。控制器类是用户与应用交互的入口。
  • service/:服务层的类通常放在这个目录下。服务类(如HelloService.java)用于封装应用的业务逻辑,它与控制器层相互协作。服务层类通常会被控制器调用,用来处理业务数据。
  • model/:这个目录包含应用的实体类或数据传输对象(DTO)。如Greeting.java这样的类,通常用来定义数据的结构,比如数据库中的表结构,或者是从前端传入的数据结构。实体类通常会有@Entity注解,用来标记它们是JPA管理的对象。

1.2 src/main/resources/

  • application.properties application.yml:这是Spring Boot项目中的配置文件。所有与项目运行相关的配置信息(如数据库连接、服务器端口、日志级别等)都可以放在这里。我们会在后面详细讲解这两个文件的作用。
  • static/:这个目录存放的是Web应用的静态资源,比如图片、JS文件、CSS文件等。当你的Web应用需要静态文件(如前端页面显示的图标、样式)时,它们会放在这个目录中。Spring Boot会自动将这些静态资源暴露到Web应用中。
  • templates/:存放模板文件(如Thymeleaf模板)。Spring Boot支持模板引擎(比如Thymeleaf、Freemarker等),并可以将HTML模板作为视图渲染到客户端。模板文件通常放在templates目录下,Spring Boot会自动根据视图解析引擎渲染它们。

⚙️ 2. application.properties / application.yml 配置文件解析

Spring Boot项目中,application.propertiesapplication.yml 用于存放应用配置。无论你是通过application.properties还是application.yml,Spring Boot都能够自动加载它们,并将其配置到Spring上下文中。下面我们来详细解析这两个文件。

2.1 application.properties

application.properties 是一个传统的配置文件,它采用键值对的格式来存储配置信息。每一行是一个独立的配置项,通常通过 = 来进行赋值。以下是几个常见的配置项:

# 配置服务器的端口号
server.port=8080

# 配置日志级别
logging.level.org.springframework.web=DEBUG

# 配置数据库连接(这里是MySQL数据库)
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
  • server.port:设置Web服务器的端口号,默认是8080,你可以根据需求修改为其他端口。
  • logging.level:设置日志的级别,Spring Boot支持不同的日志级别,如DEBUGINFOERROR等。可以通过此配置来修改日志的输出级别。
  • spring.datasource.*:Spring Boot对数据库连接的自动配置。spring.datasource.url指定数据库的URL,spring.datasource.usernamespring.datasource.password指定数据库的用户名和密码。

2.2 application.yml

application.yml 使用的是YAML格式,它通过层次结构来表示配置项,使得配置更加清晰和易读。YAML格式相对于properties文件更加直观,尤其是当项目的配置较为复杂时。

server:
  port: 8080

logging:
  level:
    org.springframework.web: DEBUG

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
  • serverloggingspring 是YAML的一级键,后面通过缩进来表示其下的配置项。
  • server.portlogging.levelspring.datasource等配置项分别配置了服务器端口、日志级别和数据库连接信息。

对于大多数Spring Boot项目来说,你可以选择application.propertiesapplication.yml来配置项目,这取决于你的个人喜好或团队的代码规范。


📦 3. pom.xml 或 build.gradle 文件解析(依赖管理)

3.1 pom.xml (Maven)

pom.xml是Maven构建工具的配置文件,Spring Boot使用它来管理项目的依赖和构建任务。通过pom.xml,你可以声明项目所需的依赖库,指定构建插件等。下面是一个典型的Spring Boot项目的pom.xml文件:

<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 http://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.5.0</version>
    </parent>

    <dependencies>
        <!-- Spring Boot Web Starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring Boot JPA Starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!-- MySQL Driver -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>

spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3.2 build.gradle (Gradle)

如果你的项目使用Gradle构建工具,build.gradle则是构建文件,它和pom.xml类似,用来声明项目的依赖和插件。

plugins {
    id 'org.springframework.boot' version '2.5.0'
    id 'java'
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-java'
}

无论你使用Maven还是Gradle,Spring Boot都会通过这些配置文件管理项目的依赖,并提供统一的构建和运行机制。


🎯 4. 总结:Spring Boot项目结构轻松搞定! 🎉

通过本章节的内容,相信你已经对Spring Boot的项目结构有了更清晰的了解。无论是应用的核心类,还是配置文件的组织方式,Spring Boot都为我们提供了标准化的项目结构,帮助我们在开发过程中提高效率。

下一步,掌握了这些基本结构后,你就可以快速启动一个Spring Boot项目,深入理解各个组件如何协作了!未来遇到项目中的问题时,记得来回顾这些内容,你将会在开发中游刃有余! 😎

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。