1. 首页
  2. 软件开发
  3. IDEA中的spring boot构架

IDEA中的spring boot构架

  • 发布于 2024-09-20
  • 0 次阅读

当你在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%n

  • logging.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