当你在IDEA中创建一个Java的maven框架下的spring boot项目的时候,整体项目结构如下:

1.com.example.demo
com.example是在创建maven项目的时候确定的包名,而后面的demo是创建项目的时候确定的模块名。

com.example.demo底下基本是就是主要的Java代码存放的地方。
(1)controller
存放的接口与代码:
控制器类(Controller Classes):这些类通常使用 @RestController 或 @Controller 注解标注。
主要作用:
接收并处理客户端请求: 控制器类的主要职责是接收来自客户端的 HTTP 请求(如 GET、POST、PUT、DELETE 等),并根据请求的 URL 和方法将其映射到相应的处理方法。
调用业务层服务: 控制器类在接收到请求后,不直接处理业务逻辑,而是调用 service 包中的服务类来执行具体的业务操作。它们通过调用业务层的方法,传递请求中的数据,并接收业务层返回的结果。
构建并返回响应: 控制器类负责将业务层返回的结果封装成 HTTP 响应,并返回给客户端。它可以返回 JSON、XML 或 HTML 格式的数据,也可以处理异常情况并返回合适的错误响应。
(2)service
存放的接口与代码:
服务接口(Service Interfaces):定义业务逻辑的抽象接口。
服务实现类(Service Implementation Classes):实现服务接口的具体类,通常使用 @Service 注解标注。
主要作用:
封装并执行业务逻辑: service 层的主要职责是处理具体的业务逻辑。它接收来自 controller 层的请求,执行相应的操作,如数据处理、计算、验证、应用业务规则等。业务层可以包含复杂的业务流程,确保业务逻辑的集中管理和封装。
管理事务: 在涉及多个数据库操作的业务逻辑中,业务层通过管理事务来确保数据的一致性和完整性。它可以使用 Spring 的事务管理功能,通过 @Transactional 注解来控制事务的提交或回滚。
调用数据访问层: 业务层负责与 repository 层交互,它调用 repository 层的方法来完成数据库的 CRUD 操作,并根据业务需求处理返回的数据。
(3)repository
存放的接口与代码:
数据访问接口(Repository Interfaces):这些接口通常继承自 Spring Data JPA 提供的 JpaRepository、CrudRepository 或 PagingAndSortingRepository 接口,并使用 @Repository 注解标注。
主要作用:
与数据库直接交互: repository 层的主要职责是执行与数据库的直接交互操作。它负责实现数据的创建、读取、更新和删除(CRUD)。这些操作由 Spring Data JPA 框架自动生成,因此开发者通常只需定义接口即可。
定义查询方法: repository 接口可以定义自定义的查询方法,使用 Spring Data JPA 提供的方法命名约定,或者使用 JPQL(Java Persistence Query Language)或原生 SQL 进行复杂查询。
封装数据库操作: 数据访问层封装了所有与数据库的交互逻辑,使得业务层不需要直接处理 SQL 或数据库连接,保持业务逻辑与数据持久化逻辑的分离。
(4)model
在 model 包中存放的接口与类主要用于定义和表示应用程序的数据模型。对于一个使用 Spring Data JPA 的应用程序来说,model 包中的类通常是实体类(Entity Classes),这些类与数据库中的表一一对应,并通过 JPA 注解进行映射。此外,在一些特定情况下,model 包中也可能包含其他类型的数据模型类,比如枚举(Enums)、嵌套类(Embeddable Classes) 或 数据传输对象(DTOs, Data Transfer Objects)。
- 实体类(Entity Classes):定义数据库表的结构并管理数据持久化,负责映射数据库中的表及其字段,还可以定义表之间的关系。
- 枚举类(Enums):定义固定的常量集合,用于表示状态、类型等固定值,提高代码可读性。
- 嵌套类(Embeddable Classes):用于将一组相关字段嵌入到实体类中,帮助复用字段结构。
- 数据传输对象(DTOs, Data Transfer Objects):用于在不同层之间传递数据,通常不包含业务逻辑。
(5)exception
作用: 存放自定义异常类和全局异常处理类,用于管理和处理应用程序中的异常情况。通过定义自定义异常和异常处理器,应用程序可以更优雅地处理错误并返回友好的错误信息。
示例: com.example.demo.exception
内容: 包含自定义异常类和全局异常处理器类,后者通常使用 @ControllerAdvice 和 @ExceptionHandler 注解来捕获和处理异常。
(6)DemoApplication
作用: 启动整个 Spring Boot 应用程序。
双击该文件就能直接在IDEA中启动整个Java程序。
2. application,properties
application.properties 是 Spring Boot 项目中的一个配置文件,主要用于配置应用程序的各种参数和属性。这个文件位于 src/main/resources 目录下,Spring Boot 在启动时会自动加载并应用这些配置。
(1)数据库配置
作用: 用于配置数据源(DataSource),连接数据库的相关信息,如数据库 URL、用户名、密码等。
常见配置项:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
解释:
spring.datasource.url:指定数据库的连接 URL。spring.datasource.username:数据库的用户名。spring.datasource.password:数据库的密码。spring.datasource.driver-class-name:数据库驱动类的全限定名。
(2)JPA(Java Persistence API)配置
作用: 配置与 JPA 相关的参数,如 Hibernate 的 DDL 自动生成策略、SQL 语句的显示等。
常见配置项:
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
解释:
spring.jpa.hibernate.ddl-auto:指定 Hibernate 的自动 DDL 操作,如update,create,create-drop,validate,none。update会自动更新数据库表结构。spring.jpa.show-sql:设置为true时,会在控制台打印执行的 SQL 语句。spring.jpa.properties.hibernate.dialect:指定 Hibernate 使用的数据库方言,用于生成针对特定数据库的 SQL。
(3)服务器配置
作用: 配置内嵌的 Tomcat 服务器的相关参数,如端口号、上下文路径等。
常见配置项:
server.port=8080
server.servlet.context-path=/myapp
解释:
server.port:指定应用程序的运行端口,默认是8080。server.servlet.context-path:指定应用的上下文路径,如果设置为/myapp,应用将通过http://localhost:8080/myapp访问。
(4)日志配置
作用: 配置应用程序的日志级别、日志文件位置等。
常见配置项:
logging.level.org.springframework=INFO
logging.level.com.example.demo=DEBUG
logging.file.name=logs/spring-boot-app.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%nlogging.level.[包名]:指定包或类的日志级别,如TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF。logging.file.name:指定日志输出文件的路径和文件名。logging.pattern.console:指定控制台日志输出的格式。
3.pom.xml
pom.xml 是 Maven 项目的核心配置文件,POM 代表 Project Object Model 。这个文件定义了项目的基本信息、依赖项、插件、构建配置等。通过 pom.xml 文件,Maven 可以管理项目的构建、依赖关系和插件。
(1)项目基本信息
作用: 定义项目的基本属性,如项目的唯一标识符、名称、描述等。
常见配置项:
<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> <groupId>com.example</groupId> <!-- 项目的组ID,通常与包名类似 --> <artifactId>demo</artifactId> <!-- 项目的唯一标识符 --> <version>1.0.0</version> <!-- 项目的版本号 --> <name>Demo Project</name> <!-- 项目的名称 --> <description>A simple demo project</description> <!-- 项目的描述 --> </project>解释:
<groupId>: 组织或项目的唯一标识符,通常与公司域名或项目包名类似(例如com.example)。<artifactId>: 项目的唯一标识符,通常是项目名称(例如demo)。<version>: 项目的版本号,用于区分不同版本的构建(例如1.0.0)。<name>: 项目的名称,通常是友好的名称,可以显示在文档或构建报告中。<description>: 项目的简短描述,说明项目的用途或功能。
(2)依赖管理
作用: 定义项目所需的外部依赖库及其版本号。Maven 会根据这些配置自动下载并管理这些依赖。
常见配置项:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.7.5</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.7.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> <scope>runtime</scope> </dependency> </dependencies>解释:
<dependencies>: 包含项目所需的所有依赖项。<dependency>: 定义单个依赖,包括groupId(组 ID)、artifactId(工件 ID)、version(版本号)。<scope>: 定义依赖的作用范围,如compile(默认)、test、provided、runtime。runtime表示依赖在编译时不需要,但在运行时需要。
(3)插件管理
- 作用: 定义 Maven 构建过程中使用的插件,这些插件用于执行特定的任务,如编译代码、打包 JAR、运行测试等。
- 常见配置项:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
解释:
<build>: 定义构建配置,包括插件、资源等。<plugins>: 包含构建过程中使用的所有插件。<plugin>: 定义单个插件,通常包括groupId、artifactId和version。<configuration>: 插件的特定配置,如maven-compiler-plugin的source和target配置用于指定 Java 版本。
(4)父项目
- 作用: 定义父项目,以便继承父项目的配置。子项目可以继承父项目的所有依赖、插件和属性配置。
- 常见配置项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
解释:
<parent>: 定义父项目的信息。
原文链接: https://blog.csdn.net/m0_73837751/article/details/141687442