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;

    @Test
    void test() {
        System.out.println(name);
        System.out.println(a1);
        System.out.println(s1);
        System.out.println(s2);
    }
  1. Envirment
@Autowired
    private Environment env;
    @Test
    void 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;
}

在测试类中使用

@Autowired
    private Person person;
    @Test
    void test() {
       System.out.println(person.getName());
    }

Profile

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

使用:

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

例如:
 

server:
  port: 8080

spring:
  profiles:
    # 指定 默认使用的配置环境
    active: dev
  main:
    allow-circular-references: true
  datasource:
    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=true
      username: ${sky.datasource.username}
      password: ${sky.datasource.password}

sky:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    host: localhost
    port: 3306
    database: sky_take_out
    username: root
    password: 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目录(比前面优先级高)下,可以使配置文件直接被读取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

随便用css换个渐变的太阳

来源于GPT4o&#xff1a;代码来源 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>渐变色上半圆…

javaScript垃圾回收机制(垃圾数据是如何自动回收的)

一.javaScript数据类型存储 若想了解javaScript的垃圾数据是如何自动回收的&#xff0c;首先我们应该先简单知道一下关于javascript的数据垃圾数据是如何存储的&#xff08;JavaScript的内存机制&#xff09;。 1.JavaScript的数据类型 JavaScript是一种弱类型的、动态的语言 …

基于t-SNE的泰坦尼克号数据集降维

目录 1. 作者介绍2. 算法介绍2.1 t-SNE介绍2.2.SNE基本原理2.3.拥挤问题2.4.t-SNE基本原理2.5.t-SNE算法过程 3. 泰坦尼克号数据集降维实验3.1.数据集介绍3.2 任务介绍3.3 代码实现3.4 实验结果 参考连接 1. 作者介绍 刘方星&#xff0c;男&#xff0c;西安工程大学电子信息学…

数仓建模—指标拆解和选取

数仓建模—指标拆解和选取 第一节指标体系初识介绍了什么是指标体系 第二节指标体系分类分级和评价管理介绍了指标体系管理相关的,也就是指标体系的分级分类 这一节我们看一下指标体系的拆解和指标选取,这里我们先说指标选取,其实在整个企业的数字化建设过程中我们其实最…

一条sql的执行流程

文章地址 https://blog.csdn.net/qq_43618881/article/details/118657040 连接器 请求先走到连接器&#xff0c;与客户端建立连接、获取权限、维持和管理连接 mysql缓存池 如果要查找的数据直接在mysql缓存池里面就直接返回数据 分析器 请求已经建立了连接&#xff0c;现在…

Spark Streaming 概述及入门案例

一、介绍 1. 不同的数据处理 从数据处理的方式&#xff1a; 流式数据处理(Streaming)批量数据处理(Batch) 从数据处理的延迟&#xff1a; 实时数据处理(毫秒级别)离线数据处理(小时或天级别) 2. 简介 SparkStreaming 是一个准实时(秒或分钟级别)、微批量的数据处理框架Spa…

代码随想录算法训练营第28天(py)| 回溯 | 93.复原IP地址、78.子集、90.子集II

93.复原IP地址 力扣链接 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 有效的IP地址不能含有前导0&#xff0c;共有4个字段&#xff0c;且每个字段不能超过255 思路 class Solution:def restoreIpAddresses(self, s: str) -> List[str]:r…

异或炸弹(easy)(牛客小白月赛95)

题目链接: D-异或炸弹&#xff08;easy&#xff09;_牛客小白月赛95 (nowcoder.com) 题目&#xff1a; 题目分析&#xff1a; 一看 还以为是二维差分的题呢 到后来才发现是一维差分问题 这里的距离是 曼哈顿距离 dis abs(x - xi) abs(y - yi) 暴力的做法 就是枚举 n * n 个…

NFC隐藏功能大公开:乘车刷门禁,NFC实用无风险

手机到底集成了多少功能&#xff1f;如今恐怕已经没有人能数的清了。但是你又用到了多少呢&#xff1f;有些功能是不是就从来没打开过呢&#xff1f;花了全款却只用功能的百分之一&#xff0c;是不是感觉很不划算呢&#xff1f; 费流量、占内存、费电通常是用户浪费手机功能的…

SG7050CCN CMOS输出石英晶体振荡器适用于防盗防灾装置

爱普生晶振SG7050CCN是一款额定频率范围2.5MHz至50MHz的石英晶体振荡器(SPXO)&#xff0c;支持CMOS输出&#xff0c;具有小尺寸7.0x5.0mm四脚贴片晶振&#xff0c;体积小巧,高稳定性&#xff0c;其中爱普生的一款额定频率16.000MHz,/-50ppm晶振&#xff0c;7050封装常规有源晶振…

大量单号中如何分析出异常单号

什么情况下单号算异常单号呢&#xff0c;首先根据单号物流信息过程轨迹判断哦&#xff0c;比如某个单号已显示快递公司已揽收了&#xff0c;超过24或36、48甚至更长时间也没有看到走件信息哦&#xff0c;一般这类单号也叫揽收后无走信息&#xff0c;这类单号就只能一条揽收信息…

【智能体】文心智能体大赛第二季持续进行中,一起在智能体的海洋里发挥你的创意吧

目录 背景作文小助手AI迅哥问答程序员黄历助手比赛时间第二期赛题丰厚奖品评选说明获奖智能体推荐文章 背景 AI应用&#xff08;智能体&#xff09;&#xff0c;持续火热&#xff0c;一句话就能创建一个有趣、好玩的应用。 可以说一分钟内就能创建一个有创意的智能体。 看大多…

【第十课】空间数据基础与处理——空间范围处理

一、前言 在利用Arcgis分析中通常会研究我国局部地区的发展&#xff0c;如长江中游城市群、 某个省、长江经济带等&#xff0c;在对这类区域进行可视化时&#xff0c;经常会需要一幅局部地图&#xff0c;通常这种局部地图是很难直接获取的&#xff0c;需要通过一定的方法进行处…

2024年云计算、信号处理与网络技术国际学术会议(ICCCSPNT 2024)

2024年云计算、信号处理与网络技术国际学术会议&#xff08;ICCCSPNT 2024&#xff09; 2024 International Academic Conference on Cloud Computing, Signal Processing, and Network Technology&#xff08;ICCCSPNT 2024&#xff09; 会议简介&#xff1a; 2024年云计算、…

cesium Material的理解与使用

1.简介 材质Material可以是比较简单的&#xff0c;比如直接将一张图片赋予表面&#xff0c;或者使用条纹状、棋盘状的图案&#xff1b;也可以使用Fabric和GLSL&#xff0c;重新创建一个新的材质或者组合现有的材质。例如&#xff0c;我们可以通过程序生成的纹理(procedural bri…

【leetcode--盛水最多的容器】

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 写出来了一半&#xff0c;想到用双指针&am…

高精度滚珠丝杆在自动化生产中的关键因素!

如今&#xff0c;自动化技术正以前所未有的速度改变着人们的生活和工作方式&#xff0c;特别是在高精度精密设备的制造与应用领域&#xff0c;提高生产效率和优化生产流程正变得越来越重要。在自动化生产中&#xff0c;滚珠丝杆的优化应用对于提高生产效率、保证产品质量至关重…

【OCPP】ocpp1.6协议第4.3章节DataTransfer的介绍及翻译

目录 4.3、DataTransfer-概述 DataTransfer 消息 数据传输请求&#xff08;DataTransfer Request&#xff09; 数据传输响应&#xff08;DataTransfer Response&#xff09; 使用场景 示例 DataTransfer 请求示例 处理 DataTransfer 响应 示例代码 可能的错误处理 总…

Java1.8语言+ springboot +mysql + Thymeleaf 全套家政上门服务平台app小程序源码

Java1.8语言 springboot mysql Thymeleaf 全套家政上门服务平台app小程序源码 家政系统是一套可以提供上门家政、上门维修、上门洗车、上门搬家等服务为一体的家政平台解决方案。它能够与微信对接、拥有用户端小程序&#xff0c;并提供师傅端app&#xff0c;可以帮助创业者在…

AutoCutVideo自动剪辑软件

随着视频内容创作的普及&#xff0c;找到一款既高效又便捷的视频剪辑工具成为了创作者的迫切需求。在众多选择中&#xff0c;AutoCutVideo以其杰出的功能脱颖而出&#xff0c;提供了一个无与伦比的视频编辑解决方案。这款软件不仅能够支持多样化的视频格式导入&#xff0c;其直…