SpringBoot : ch12 多模块配置YAML文件

news2024/11/26 14:41:34

前言

当您使用SpringBoot框架进行项目开发时,通常需要配置一些参数和属性。在实际开发中,可能需要将这些配置参数分成多个不同的YAML文件,并将它们组织到不同的模块中。这样可以方便管理和维护配置文件,并且可以避免配置文件的冲突。

本文将为您介绍如何在SpringBoot多模块项目中配置YAML文件。并演示如何将配置文件组织到不同的模块中,以及如何在应用程序中读取和使用这些配置文件。

一、前期准备

1、新建项目,结构如下

2、导入依赖
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <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.0</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </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>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <image>
                        <builder>paketobuildpacks/builder-jammy-base:latest</builder>
                    </image>
                </configuration>
            </plugin>
        </plugins>
    </build>

在dependencies标签中,列出了项目所依赖的各个库和框架,包括:

  • spring-boot-starter-amqp:用于支持RabbitMQ消息队列的Spring Boot Starter。
  • spring-boot-starter-data-elasticsearch:用于支持Elasticsearch搜索引擎的Spring Boot Starter。
  • spring-boot-starter-data-redis:用于支持Redis缓存和数据存储的Spring Boot Starter。
  • spring-boot-starter-jdbc:用于支持JDBC数据库访问的Spring Boot Starter。
  • spring-boot-starter-web:用于支持Web开发的Spring Boot Starter。
  • mybatis-spring-boot-starter:用于支持MyBatis数据库访问的Spring Boot Starter。
  • mysql-connector-j:MySQL数据库驱动。
  • lombok:用于简化Java代码编写的库。
  • spring-boot-starter-test:用于支持单元测试的Spring Boot Starter。
  • pagehelper-spring-boot-starter:用于支持MyBatis分页查询的Spring Boot Starter。
  • spring-rabbit-test:用于RabbitMQ单元测试的Spring库。

在dependencyManagement标签中,引入了spring-boot-dependencies的pom文件,用于统一管理Spring Boot相关的依赖版本号。

在build标签中,配置了spring-boot-maven-plugin插件,用于将项目构建为一个可执行的Spring Boot应用程序,并指定了基础镜像为paketobuildpacks/builder-jammy-base:latest。

这些配置可以确保项目正确引入所需的依赖库,并且可以使用Maven构建工具来构建和打包项目。

 

二、配置yml

我们配置三个配置文件,一个主配置文件,一个web配置文件,一个dao的配置文件。

1、application-web.yml
server:
  port: 8088
  servlet:
    context-path: /ch12
    encoding:
      enabled: true
      charset: UTF-8
      force: true

简单的配置服务器的端口号和上下文路径。

2、application-dao.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:330/psm?userUnicode=true&characterEncoding=utf-8&serverTimeZone=Asia/shanghai
    username: root
    password: 123456
    hikari:
      minimum-idle: 5
      maximum-pool-size: 20
      idle-timeout: 90000
      connection-timeout: 3000
      connection-test-query: select 1
mybatis:
  type-aliases-package: edu.nf.ch12.entity
  mapper-locations: classpath://mappers/*.xml

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true

 配置连接数据库的数据源,mybatis,以及分页插件。

3、主配置类 application.yml
spring:
  profiles:
    include: web , dao

在Spring Boot中,可以使用spring.profiles属性来指定应用程序的配置文件。profiles属性允许您根据特定的配置文件来激活或禁用不同的功能或模块。

在您的示例配置中,spring.profiles.include属性被设置为"web"和"dao",表示您希望同时激活这两个配置文件。这意味着应用程序将加载所有与这些配置文件相关的属性和bean定义。

使用spring.profiles.include属性可以使您的应用程序在不同的环境中以不同的方式运行。例如,在开发环境中,您可以仅激活"web"配置文件,而在生产环境中,您可以同时激活"web"和"dao"配置文件。

通过使用多个配置文件,您可以更好地组织和管理应用程序的配置。每个配置文件可以包含特定于某个模块或功能的属性和bean定义,使得配置更加清晰和可维护。

4、测试

运行服务器,然后在浏览器访问地址,只要能够进正常的访问controler的路径就表示没有报错。 

 

三、配置多个yml文件的注意事项

在Spring Boot中,你可以使用多个YAML配置文件来管理不同的配置属性。以下是使用多个YAML配置文件时的一些注意事项:

  1. 文件命名:默认情况下,Spring Boot会加载application.ymlapplication.properties作为主要的配置文件。如果你想添加额外的配置文件,可以按照以下命名规则创建文件:

    • application-{web}.ymlapplication-{dao}.properties:用于特定profile的配置文件,例如application-web.yml用于开发环境。
    • {name}-{profile}.yml{name}-{profile}.properties:用于特定profile的特定模块的配置文件,例如database-dev.yml用于开发环境下的数据库配置。
  2. 配置文件的加载顺序:Spring Boot会根据默认的配置文件命名规则按照一定的顺序加载配置文件。具体的加载顺序如下:

    • 加载主要的配置文件(如application.yml)。
    • 根据当前激活的profile加载相应的配置文件(如application-dev.yml)。
    • 加载其他自定义的配置文件。
  3. 配置文件的优先级:如果存在相同配置属性在多个配置文件中定义,Spring Boot会按照以下优先级来确定最终生效的配置值:

    • 高优先级的配置文件会覆盖低优先级的配置文件中相同属性的值。
    • 命令行参数会覆盖所有配置文件中相同属性的值。
  4. 自定义配置文件位置:除了默认的位置外,你还可以通过设置spring.config.namespring.config.location属性来指定自定义的配置文件位置和名称。例如,在启动命令中添加--spring.config.name=myconfig参数可以加载名为myconfig.yml的配置文件。

  5. 注意profiles和properties之间的区别:Profiles用于区分不同环境下的配置,而Properties则是配置属性本身的键值对。在YAML文件中,使用---来分隔不同的profile配置块,使用缩进来表示配置属性的层级关系。

这些注意事项可以帮助你更好地管理和组织多个YAML配置文件,以满足不同环境和需求的配置需求。

 

四、SpringBoot多模块配置YAML文件有什么好处?

在Spring Boot多模块项目中,将配置信息分散在各个子模块中会使得配置管理变得困难,也容易出现冲突和重复定义的问题。因此,使用多个YAML文件来集中管理和组织配置信息有以下好处:

  1. 模块化:将配置信息按照模块进行划分,每个模块的配置信息都存放在自己的YAML文件中,更加清晰明了。

  2. 继承性:通过使用spring.profiles.include属性可以让不同的YAML文件相互引用和继承,从而减少了重复定义和冲突问题。

  3. 多环境支持:通过使用不同的profile文件,可以轻松地配置不同的环境变量,如开发、测试和生产等。

  4. 安全性:通过使用不同的YAML文件,可以将敏感的配置信息(如数据库密码)单独存放在另一个文件中,并设置合适的访问权限,提高安全性。

  5. 可维护性:将配置信息分散到不同的YAML文件中,使得配置信息更易于维护和管理,也更容易进行版本控制。

综上所述,使用多个YAML文件来管理和组织Spring Boot多模块项目的配置信息,可以使配置信息更加清晰、易于管理和维护,也能帮助我们更好地实现多环境支持和安全性控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能优化算法应用:基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.瞬态优化算法4.实验参数设定5.算法结果6.参考…

java8 升级 java11

1.安装java11 1.1 安装参考 ​​​​​​LINUX安装JDK_liunx上安装ocean-CSDN博客 1.2 检查 java -version 2.Maven 项目pom文件修改 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEnc…

12.05

以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&…

【JavaWeb】前端工程化(VUE3)

前端工程化&#xff08;VUE3&#xff09; 文章目录 前端工程化&#xff08;VUE3&#xff09;一、概述二、ECMA6Script2.1 es6的变量和模板字符串2.2 es6的解构表达式2.3 es6的箭头函数2.4 rest和spread2.5 es6的对象创建和拷贝2.6 es6的模块化处理 三、前端工程化环境搭建3.1 N…

玩转大数据7:数据湖与数据仓库的比较与选择

1. 引言 在当今数字化的世界中&#xff0c;数据被视为一种宝贵的资源&#xff0c;而数据湖和数据仓库则是两种重要的数据处理工具。本文将详细介绍这两种工具的概念、作用以及它们之间的区别和联系。 1.1. 数据湖的概念和作用 数据湖是一个集中式存储和处理大量数据的平台&a…

Java-宋红康-(课P132)-多线程的概念

b站视频&#xff1a; https://www.bilibili.com/video/BV1PY411e7J6?p132&vd_source969a2f5c0c775c9626d7d7abe1828db0 目录 1.1 概述 1.2 程序、进程与线程 1.3 进程与线程的关系 1.4 线程调度 1.5 多线程程序的优点 1.6 补充概念-单核CPU和多核CPU 1.1 概述 我们…

Oracle merge into语句(merge into Statement)

在Oracle中&#xff0c;常规的DML语句只能完成单一功能&#xff0c;&#xff0c;例如insert/delete/update只能三选一&#xff0c;而merge into语句可以同时对一张表进行更新/插入/删除。 目录 一、基本语法 二、用法示例 2.1 同时更新和插入 2.2 where子句 2.3 delete子句 2.4…

Python神器解析时间序列数据:数据分析者必读

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 时间序列数据是在许多领域中都至关重要的数据类型&#xff0c;它涵盖了一系列按时间顺序排列的数据点。Python作为一种强大的数据分析工具&#xff0c;提供了许多库和工具&#xff0c;能够有效地处理、分析和可视…

掌握Python Pingouin:数据统计新利器解析!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Pingouin库基于pandas、scipy和statsmodels&#xff0c;为用户提供了执行常见统计分析的功能。它支持各种统计方法和假设检验&#xff0c;例如 t-tests、ANOVA、correlation analysis 等。让我们看一些示例代码&…

全网最新最全面的Appium自动化:Appium常用操作之点击滑动类操作

点击&滑动类操作 在进行app自动化的时候,经常会进行点击或滑动的操作,比如点击坐标&#xff0c;左右滑动,上下滑动等&#xff0c;Appium相应提供了解决方案。 坐标的开启步骤&#xff1a; 开发者选项——指针位置开启 坐标展示&#xff1a; 在flick和swipe中都提到了坐标…

C/C++---------------LeetCode第118. 杨辉三角

杨辉三角 题目及要求动态规划在mian内使用 题目及要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]] 提示: 1 < numRow…

算法通关村第二关—链表反转的拓展问题(白银)

链表反转的拓展问题 一、指定区间反转 LeetCode92&#xff1a;给你单链表的头指针head和两个整数left和right,其中left<right。请你反转从位置left到位置right的链表节点&#xff0c;返回反转后的链表。 1.1 头插法 反转的整体思想是&#xff0c;在需要反转的区间里&…

Linux 调试器 --- g d b 使用

目录 一&#xff1a;gdb简介 二&#xff1a;示例代码 三&#xff1a;使用 1.启动gdb 2.各种指令 <1>: 查看源代码 <2>:设置断点 <3>:查看断点信息 <4>:删除断点 <5>: run <6>:逐过程调试 <7>:逐语句调试 <8>:查…

AntV和AntD之间的区别与联系

前言&#xff1a;最近在调研前端的一些框架&#xff0c;技术栈主要是用react&#xff0c;所以找到了2个十分相似解决方案&#xff0c;拿来对比一下&#xff08;antd和antv都是基于react&#xff09; antd对比antv antd antv 解决方案企业级 UI 设计语言数据可视化解决方案提供…

Innodb数据结构空间占用

了解数据存储空间占用&#xff0c;可以更方便我们再企业中对于数据库相关优化做评估。 一、查看当前数据表空间占用信息 首先这里准备一张数据库表约2.3w数据量&#xff1a; CREATE TABLE project (tenantsid bigint(20) NOT NULL DEFAULT 0 COMMENT 租户ID,project_id bigi…

双击热备方案实现(全)

双击热备是应用与服务器的一种解决方案&#xff0c;其构造思想是主机和从机通过TCP/IP网络连接&#xff0c;正常情况下主机处于工作状态&#xff0c;从机处于监视状态&#xff0c;一旦从机发现主机异常&#xff0c;从机将会在很短的时间内代替主机。完全实现主机的功能。 要想实…

odoo15关于tree视图添加按钮说明

1、odoo15的tree已经可以像form一样直接添加header标签 2、选取具体数据后&#xff0c;按钮出现&#xff0c;只需要在按钮中添加具体功能即可&#xff0c;下面是一个继承 3、效果&#xff1a;

JVM之四种引用类型(五)

JVM 系列吊打面试官&#xff1a;说一下 Java 的四种引用类型 四种引种类型 1.强引用 在 Java 中最常见的就是强引用&#xff0c;把一个对象赋给一个引用变量&#xff0c;这个引用变量就是一个强引用。当一个对象被强引用变量引用时&#xff0c;它处于可达状态&#xff0c;它是…

如何通过添加香港高防IP来防御攻击?

​  针对外贸建站&#xff0c;租用香港服务器&#xff0c;除了站长们较为关注的价格外&#xff0c;安全性也是至关重要的。香港服务器在使用中可能会遭受到常见的 DDoS 网络攻击&#xff0c;而在 DDoS 防护这一块&#xff0c;您可以使用香港 DDoS 高防 IP 和香港高防服务器来…

基于51单片机多功能时钟闹钟系统

**单片机设计介绍&#xff0c;基于51单片机多功能时钟闹钟系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的多功能时钟闹钟系统是一种基于单片机的电子设备&#xff0c;能够显示时间、设置闹钟、进行计时以及提…