springboot配置

springboot配置

配置文件分类

  • springboot提供了多种属性配置方式
    • application.xml(只有老的spring项目使用)
    • application.properties
    • application.yml(或yaml)

优先级:properties>yml>yaml

配置文件

pom.xml★

在Spring Boot项目中,pom.xml文件是Maven项目对象模型(Project Object Model)的定义文件,它用于管理项目的构建、依赖和插件。

Maven是一个流行的自动化构建工具,它通过pom.xml文件来执行构建过程。本教程全部项目都使用Maven构建。

下面是一个基本的pom.xml文件的结构和各个部分的解释:

<?xml version="1.0" encoding="UTF-8"?>
<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> <!-- 组织或项目的唯一标识符 --><artifactId>my-spring-boot-app</artifactId> <!-- 项目的基本名称 --><version>1.0-SNAPSHOT</version> <!-- 项目的版本号 --><name>My Spring Boot App</name> <!-- 项目的显示名称 --><description>Spring Boot 3 example project</description> <!-- 项目的描述 --><!-- Spring Boot父项目,提供依赖管理和插件管理 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.0</version></parent><!-- 项目依赖 --><dependencies><!-- Spring Boot的Web Starter,包含Spring MVC和Tomcat等 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 其他依赖... --></dependencies><!-- 项目构建配置 --><build><plugins><!-- Spring Boot的Maven插件,用于打包可执行的jar或war文件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- 其他插件... --></plugins></build></project>

注意事项:

  • 继承Spring Boot父项目:通过指定spring-boot-starter-parent作为父POM,您的项目将继承Spring Boot的默认配置,包括依赖管理、插件管理等。
  • 依赖管理:在<dependencies>部分,您可以添加项目所需的所有依赖。Spring Boot提供了许多“Starter”依赖,它们是一组方便的依赖描述符,可以简化构建配置。
  • 插件配置:在<build>部分的<plugins>中,您可以配置项目构建时使用的插件。例如,spring-boot-maven-plugin用于创建可执行的jar或war文件。
  • 属性和配置:您可以在pom.xml中定义和使用属性,以便于维护和管理配置。例如,您可以定义一个属性来表示Spring Boot的版本号,并在多个地方引用它。
  • 多环境配置:Maven支持多环境配置,您可以通过 profiles 来定义不同环境下的配置,并在构建时激活相应的 profile。

properties配置文件*

介绍

properties配置文件是一种用于配置应用程序属性的文件格式。它是一个标准的Java属性文件,通常包含键值对,其中键和值之间用等号=分隔。properties文件可以直接放在src/main/resources目录下,或者放在任何类路径(classpath)可以访问的地方。

只有你需要与旧的Java应用程序或框架保持兼容时才使用。

示例
server.port=8080
server.servlet.context-path=/myapp
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
优缺点

优点:

向后兼容性:properties文件格式在Java历史中非常悠久,几乎所有版本的Java都支持这种格式。简单性:properties文件的语法非常简单,对于简单的配置来说,它是非常直观的。

缺点

树状结构的复杂性:对于复杂的配置,尤其是层级结构的数据,properties文件可能会变得难以阅读和维护。类型不明确:properties文件中的所有值都是字符串,这意味着在将它们赋值给配置类中的不同类型字段时,需要手动进行类型转换。

yml配置文件★

介绍

YAML是“YAML Ain’t Markup Language”(递归缩写为“YAML不是标记语言”)的缩写,它是一种直观的数据序列化格式,可以被用于配置文件。

YAML使用空白字符(空格和缩进)来表示结构层次,它比properties文件更适合表示复杂的配置数据,实际开发基本都使用yml配置文件,有的程序员甚至在创建springboot工程后第一件事就是把配置文件的后缀改为yml。

适合复杂的、具有层级结构的配置场景,尤其是当你需要配置大量的、相关的配置项时。

优缺点

优点:

清晰的层次结构:YAML使用缩进来表示层级关系,这使得表示复杂的数据结构变得非常清晰。类型支持:YAML支持多种数据类型,如字符串、数字、布尔值等,并且可以自动将值转换为适当的类型。可读性强:YAML文件通常更易于阅读和理解,尤其是对于具有复杂层次结构的配置。

缺点:

轻微的复杂性:YAML的语法比properties文件稍微复杂一些,初学者可能需要一些时间来适应。

yml基本语法
  • 大小写敏感
  • 数值前必须有空格,作为分隔符
  • 使用缩进表示层级关系,缩进时,不允许使用tab键,只能使用空格
  • 缩进的空格数不重要,只要相同层级的元素左侧对齐即可
  • #表示注解
server:# 修改springboot工程运行端口port: 8081
#驱动类名称  
spring:  datasource:  # 设置数据库驱动 driver-class-name: com.mysql.cj.jdbc.Driver  # 设置数据库地址url: jdbc:mysql://localhost:3306/tlias  username: root  password: 123456  servlet:  multipart:  enabled: true  max-file-size: 10MB  max-request-size: 100MB  #配置mybatis的日志, 指定输出到控制台  
mybatis:  configuration:  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  map-underscore-to-camel-case: true
用户自定义内容
  • 对象(map): 键值对的集合
person:name: zhangsan
# 行内写法
person: {name: zhangsan}
  • 数组: 一组按次序排序的值
address:- beijing- shanghai
# 行内写法
address: [beijing,shanghai]
  • 纯量: 不可分割的值
s1: '123 \n 456' # 单引号不会被转义
s2: "123 \n 456" # 双引号会被转义
  • 参数引用
name: zhangsan
person:name: ${name}
获取自定义值
  1. @Value
@Value("${person1.name}")private String name;@Value("${address1[0]}")private String a1;@Value("${s1}")private String s1;@Value("${s2}")private String s2;@Testvoid test() {System.out.println(name);System.out.println(a1);System.out.println(s1);System.out.println(s2);}
  1. Envirment
@Autowiredprivate Environment env;@Testvoid test() {System.out.println(env.getProperty("person1.name"));System.out.println(env.getProperty("address1[0]"));System.out.println(env.getProperty("s1"));System.out.println(env.getProperty("s2"));}
  1. @ConfigurationProperties

先在pom.xml中添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

创建配置类

@Data //lombok
@Component //添加到组件
@ConfigurationProperties(prefix = "person1")//绑定配置文件中配置类
public class Person {private String name;private int age;private String[] address;
}

在测试类中使用

@Autowiredprivate Person person;@Testvoid test() {System.out.println(person.getName());}

Profile

介绍:profiles是不同配置选项的集合,它们对应于应用程序的不同运行环境,如开发环境、测试环境和生产环境。每个环境可能需要不同的设置,例如数据库连接、API端点、服务地址等。

使用:

  1. 在application.yml中,添加spring.profiles.active属性可以指定默认使用的配置环境
  2. 在application.yml中可以使用 ${...}指定需要使用的配置

例如:
 

server:port: 8080spring:profiles:# 指定 默认使用的配置环境active: devmain:allow-circular-references: truedatasource:druid:driver-class-name: ${sky.datasource.driver-class-name}url: jdbc:mysql://${sky.datasource.host}:${sky.datasource.port}/${sky.datasource.database}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: ${sky.datasource.username}password: ${sky.datasource.password}

sky:datasource:driver-class-name: com.mysql.cj.jdbc.Driverhost: localhostport: 3306database: sky_take_outusername: rootpassword: 123456

配置加载顺序

内部配置

  1. file:./config/:当前项目下的/config目录下
  2. file:./当前项目的根目录
  3. classpath:/config/classpath的/config目录
  4. classpath:.classpath的根目录

加载顺序为上面的排列顺序,高优先级配置的属性会生效

外部配置

注意:当前项目下的/config目录下的配置文件和当前项目的根目录的配置文件因为不符合maven结构,不会被打入jar包

  1. java -jar xxxx.jar --springboot.port=端口号
  2. java -jar xxxx.jar --springboot.config.location=配置文件路径
  3. 将配置文件写在target根目录或target目录的config目录(比前面优先级高)下,可以使配置文件直接被读取

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

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

相关文章

PLM系统与PDM系统、ERP系统、CRM系统有哪些关系?

在当今快速发展的信息技术时代&#xff0c;企业信息化已成为提升管理水平和增强竞争力的关键。其中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;作为企业信息化的基石&#xff0c;与其他信息系统如产品数据管理&#xff08;PDM&#xff09;、企业资源规划&#xf…

基于SpringBoot+Vue的公园管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

如何自建yum源仓库

文章目录 1&#xff0c;创建可用的yum源文件夹&#xff0c;把你自己的软件包&#xff0c;并放在这个目录文件夹中2&#xff0c;将yum源文件夹目录复制到/var/www/html/中3&#xff0c;客户端修改配置文件4&#xff0c;创建一个 RPM 软件包存储库5&#xff0c;查验是否成功6&…

Dify快速接入微信

一、Dify简介 项目官网&#xff1a;Dify.AI 生成式 AI 应用创新引擎 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非…

ESP32-C3模组上跑通OTA升级(11)

接前一篇文章&#xff1a;ESP32-C3模组上跑通OTA升级&#xff08;10&#xff09; 本文内容参考&#xff1a; 《ESP3-C3 物联网工程开发实战》 乐鑫科技 特此致谢&#xff01; 上一回说到解决了证书验证的问题&#xff0c;但紧接着又出现了一个新的问题&#xff1a;版本相同无…

QT等比例缩放图片

1、这里使用QLabe控件显示图片&#xff0c;如下&#xff1a; label->setPixmap(QPixmap::fromImage(image_2)); 以上是直接原始大小来显示QImage image_2图片。 label->setAlignment(Qt::AlignCenter); 以上代码&#xff0c;是将显示的图片居中展示&#xff0c;默认…

Vue3-Pinia(大菠萝)附源码

文章目录 Pinia 开源地址Pinia 定义与起源优点与特性Pinia使用准备一个小模块(可参考以下程序)搭建 pinia 环境存储读取数据修改数据(三种方式)storeToRefsgetters$subscribestore组合式写法 更多相关内容可查看 Pinia 开源地址 git地址&#xff1a;https://gitee.com/its-a-l…

干货分享 | 详解TSMaster CAN 与 CANFD 的 CRCE2E 校验方法

面对切换工具链的用户来说&#xff0c;在 TSMaster 上完成总线通讯中的 CRC/E2E 校验处理不是特别熟悉&#xff0c;该文章可以协助客户快速使用 TSMaster 完成 CAN/CAN FD 总线通讯的 CRC/E2E 校验。 本文关键字&#xff1a;TSMaster&#xff0c;CAN/CANFD&#xff0c;CRC 校验…

RK3588平台编译zlog 日志模块

下载zlog之后 解压 进入zlog目录 新建一个build_rk3588.sh脚本 内容如下 make CCaarch64-linux-gcc PREFIX./install_rk3588 将工具链导入环境变量 export PATH/home/QMCY/RK3588/arm64tools/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/:$PATH 编译无问题 产生的…

【wiki知识库】04.SpringBoot后端实现电子书的增删改查以及前端界面的展示

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;今日内容 二、&#x1f30f;前端页面的改造 2.1新增电子书管理页面 2.2新增路由规则 2.3修改the-header代码 三、&#x1f697;SpringBoot后端Ebook模块改造 3.1增加电子书增/改接口 3.1.…

基于SpringBoot+Vue租房网站设计和实现(源码+LW+部署文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

基于全志T507-H的Igh EtherCAT主站案例分享

基于全志T507-H的Linux-RT IgH EtherCAT主站演示 下文主要介绍基于全志T507-H&#xff08;硬件平台&#xff1a;创龙科技TLT507-EVM评估板&#xff09;案例&#xff0c;按照创龙科技提供的案例用户手册进行操作得出测试结果。 本次演示的开发环境&#xff1a; Windows开发环…

【二进制部署k8s-1.29.4】九、cilium1.15.4安装

文章目录 简介 一.安装helm和cilium 客户端命令二.安装cilium2.1.安装cilium对于系统内核的版本的要求2.2.安装的命令及参数如下&#xff1a;参数注释&#xff1a; 三.确认cilium的安装状态四.访问cilium的监控页面hubble-ui 简介 本章节主要讲解k8s集群网络插件cni的安装&…

react-native运行程序 出现 Application XXX is waiting for the debugger

1.重启adb: adb kill-server、 adb start-server. 2、确定USB调试模式是否开启&#xff0c;如果已经开启了&#xff0c;关闭了重新打开一下 3.选择调试模式并关闭等待调试程序

STM32(十):SPI (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中USART通信协议来串口通信&#xff0c;并向XCOM串口助手发送信息。这篇文章我们来介绍一下如何用STM32单片机中SPI接口来实现LED的闪亮并玩转WS2812B灯带。 一、实验原理 串行通信之前的博客里有所介绍&#xff0c;可以查看以下…

故障预警 vs 故障分类:哪个更有意义,哪个更具挑战性?

故障预警 vs 故障分类&#xff1a;哪个更有意义&#xff0c;哪个更具挑战性&#xff1f; 在现代工业系统中&#xff0c;风力发电机、制造设备等关键装置的可靠性和稳定性对生产效率至关重要。为此&#xff0c;故障预警和故障分类成为保障设备正常运行的重要手段。那么&#xf…

UI案例——登陆系统

UI的登陆界面实例 在学习了UILabel&#xff0c;UIButton&#xff0c;UIView&#xff0c;UITextField的内容之后&#xff0c;我们就可以写一个简单的登陆界面 我们可以通过UILabel来编写我们显示在登陆界面上的文字比方说下面这两行字就是通过UILabel去实现的。 下面给出一下实现…

每日5题Day17 - LeetCode 81 - 85

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;81. 搜索旋转排序数组 II - 力扣&#xff08;LeetCode&#xff09; class Solution {public boolean search(int[] nums, int target) {int n nums.length;if (n…

【MySQL】MySQL 图形化界面 - 使用说明(MySQL Workbench)

一、安装软件 Navicat&#xff0c;SQLyog 这些软件都不错&#xff0c;不过都需要收费&#xff0c;当然也有破解版。下面用 MySQL Workbench&#xff0c;它是官方提供的工具。 二、使用操作 这个软件本质是一个客户端&#xff0c;现在要让数据库能够远程登录。不过一般不会远程…

Love-Yi情侣网站3.0存在SQL注入漏洞

目录 1. 前言 2. 网站简介 3. 寻找特征点 3.1 第一次尝试 3.2 第二次尝试 4.资产搜索 5.漏洞复现 5.1 寻找漏洞点 5.2 进行进一步测试 5.2.1 手动测试 1.寻找字段 2.寻找回显位 3.查询当前用户 5.2.2 sqlmap去跑 6.总结 1. 前言 朋友说自己建了一个情侣网站,看到…