锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. IDEA中的spring boot构架

IDEA中的spring boot构架

0
  • 软件开发
  • 发布于 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

标签: #软件开发 1171 #JAVA 991 #Spring Boot 173
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.