【springboot】配置文件入门

news2024/11/18 23:43:00

配置文件入门

配置文件最重要的目的:解决硬编码问题(代码写死)

我们接下来主要介绍两个方面:常见的配置项和配置文件的使用

SpringBoot 的配置文件,有三种格式

  1. properties
  2. yaml
  3. yml(yaml的简写)

用的较多的是yml和properties文件

如果项目中,同时存在properties和yml配置文件,properties的优先级更高。企业开发中,通常只使用其中一个文件,但是如果同时存在时,两个文件都生效。如果两个文件中,都包含同一个配置,以properties为主。

properties配置文件说明

使用properties配置文件改变端口号:

server.port=9090

properties语法格式:

key value的形式,以 = 分割
key 的格式建议是小写,单词之间使用.分割

举例:配置数据库连接信息

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

除此之外我们还可以自定义配置

demo.key = hello,properties

读取配置文件:

@RestController
public class PropertiesController {
    //读取配置文件
    //如果去掉$,就会把""中的值赋值给当前变量
    @Value("${demo.key}")
    private String key;
    @RequestMapping("/readKey")
    public String readKey(){
        return "读取到的配置:" + key;
    }
}

yml配置文件说明

把properties配置文件中的.换成冒号+换行,key后面用冒号赋值

使用yml配置文件改变端口号:

server:
  port: 9090

(Value前面)冒号后面一定要加空格,空格不可以省略。

自定义配置:

demo:
  key1: hello,yml
  key2: 12
  key3: ""

读取配置:yml文件能够自动转化类型。

@RestController
public class YmlController {
    @Value("${demo.key1}")
    private String key1;
    @Value("${demo.key2}")
    private Integer key2;
    @Value("${demo.key3}")
    private String key3;
    @PostConstruct
    public void init(){
        System.out.println("key1:" + key1);
        System.out.println("key2:" + key2);
        System.out.println("key3:" + key3);
    }
}

yml特殊内容配置
null:使用~
空字符串:key后面直接空着就行了,推荐用单引号或者双引号括起来

配置文件单双引号的区别

自定义配置文件:

string:
  str1: Hello \n Spring Boot.
  str2: 'Hello \n Spring Boot.'
  str3: "Hello \n Spring Boot."

执行结果:

image-20240118165107315

单引号会对特殊字符进行转义,双引号不会进行转义。
\n本身表示的是换行。使用单引号时,内容表示成了\n,而不是换行,所以认为是转义。使用双引号时,\n表示成了换行,也就是\n的本来含义。

yml配置对象

自定义配置文件:

student:
  id: 18
  name: zhangsan
  age: 12

定义一个java对象:

@Data
@Component//存储到spring中
@ConfigurationProperties(prefix = "student")//读取配置文件
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

通过属性注入对象,进行使用:

@Autowired
Student student;

yml配置集合

自定义配置:

dbtypes:
  name: #配置集合
    - mysql
    - sqlserver
    - db2
  map: #配置Map
    k1: kk1
    k2: kk2
    k3: kk3

定义一个对象:

@Component
@Data
@ConfigurationProperties(prefix = "dbtypes")
public class DBType {
    private String[] name;//可以用List来接收
    private Map<String,String> map;
}

获取对象并打印对象:

@RestController
public class YmlController {
    @Autowired
    DBType dbType;
    @PostConstruct
    public void init(){
        System.out.println(dbType + ",length:" + dbType.getName().length);
    }
}

如果定义集合-后面不加空格,这部分内容会变成一个整体,统一赋值给对应属性。

两种格式的配置文件对比:

  • properties读取中文乱码,yml不会产生乱码

  • yml对中文的兼容性比较好。优先读取 properties。properties出的比较早。

  • ⽀持更多的编程语⾔,不⽌是Java中可以使⽤,在Golang,Python,Ruby,JavaScript中也可以使⽤

  • yml⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态

  • yml不适合写复杂的配置⽂件 ,对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)

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

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

相关文章

常用中间件漏洞

IIS6 IIS7 安装 控制面板-----打开关闭windows功能 添加角色-----添加IIS 启动之后访问localhost 复现 服务器换成IIS7 访问报错 大概就是缺少CGI模块 问题解决 添加php-cgi的路径 添加脚本映射 修改php.ini文件 将 cgi.fix_pathinfo1 然后设置一个图片 访问 在后缀加上/.…

情人节专属--HTML制作情人节告白爱心

💕效果展示 💕html展示 <!DOCTYPE html> <html lang="en" > <head>

C#: form 窗体的各种操作

说明&#xff1a;记录 C# form 窗体的各种操作 1. C# form 窗体居中显示 // 获取屏幕的宽度和高度 int screenWidth Screen.PrimaryScreen.Bounds.Width; int screenHeight Screen.PrimaryScreen.Bounds.Height;// 设置窗体的位置 this.StartPosition FormStartPosition.M…

vue基于Spring Boot共享单车租赁报修信息系统

共享单车信息系统分为二个部分&#xff0c;即管理员和用户。该系统是根据用户的实际需求开发的&#xff0c;贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限&#xff0c;其次是用户。管理员一般负责整个系统的运行维护…

Byrdhouse AI实时语音翻译工具,可以在视频通话中翻译100多种语言

你是否曾经在跨国会议或与外国友人聊天时&#xff0c;因为语言不通而感到尴尬或困扰&#xff1f;是不是还在找可以实时翻译的软件或者APP&#xff1f;现在&#xff0c;有了这款语音翻译神器&#xff0c;一切都将变得简单&#xff01; 免费使用链接&#xff1a;https://byrdhous…

JVM性能调优-垃圾收集器ZGC详解

1. ZGC收集器(-XX:UseZGC) 参考文章&#xff1a;Main - Main - OpenJDK Wiki http://cr.openjdk.java.net/~pliden/slides/ZGC-Jfokus-2018.pdf ZGC是一款JDK 11中新加入的具有实验性质的低延迟垃圾收集器&#xff0c;ZGC可以说源自于是Azul System公司开发的C4&#xff08;…

必学!白银现货排期基础知识

白银现货排期是一种交易模式&#xff0c;它涉及到未来交货的安排。在这种模式之下&#xff0c;买卖双方可以预先达成协议&#xff0c;确定未来某一时间的交货安排。现货排期这种交易方式的特点&#xff0c;是白银会在约定的时间交付&#xff0c;而价格可以在合约签订时确定。 白…

计算机网络——数据链路层(1)

一、概述 在计算机网络中&#xff0c;数据链路层承担着点对点通信的任务&#xff0c;用于跨物理层在网段节点之间参数数据。它在网络分层中处于物理层之上&#xff0c;网路层之下。 在链路层的讨论中&#xff0c;我们将看到两种截然不同类型的链路层信道。第一种类型是广播信道…

WAF攻防相关知识点总结1--信息收集中的WAF触发及解决方案

什么是WAF WAF可以通过对Web应用程序的流量进行过滤和监控&#xff0c;识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击&#xff0c;例如SQL注入、跨站点脚本攻击&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09;等&#xff0c;并采取相…

python如何包含其他路径的模块

python 包含其他路径的模块&#xff1a; 例如目录结构: dir1 |__ init.py |__ module1.py dir2 |__ main.py main.py from dir1 import module1首先需要在 dir1 添加 init.py 文件&#xff0c;该文件可以是空文件。 其次需要将dir1 的父目录添加到python 解释器的&#xf…

Js-WebAPIs-事件(二)

事件监听&#xff08;绑定&#xff09; 什么是事件&#xff1f; 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响…

springboot 原理分析之自动配置

一、Condition Condition 是在 Spring 4.0 增加的条件判断功能&#xff0c;通过这个可以功能可以实现选择性的创建 Bean 操作。比如说&#xff0c;只有满足某一个条件才能创建这个 Bean&#xff0c;否则就不创建。 SpringBoot 是如何知道要创建哪个 Bean 的&#xff1f;比如 Sp…

一文说明白 MySQL 的 ACID 和 几种日志的关系

1、简介 我们对于MySQL 很熟悉&#xff0c;关于其特性都有一定的了解&#xff0c;但是关于一些具体的实现原理&#xff0c;有的小伙伴可能不太熟悉&#xff0c;而且这部分知识在我们互联网大厂面试中是经常涉及的&#xff0c;因此&#xff0c;本文将带你深入底层&#xff0c;顺…

【计算机网络】子网划分(经典基础练习题)

一、某主机IP地址为110.35.2.68&#xff0c;子网掩码为255.255.255.128&#xff0c;求网络地址&#xff1f; 二、有A类网络18.0.0.0的子网掩码为255.128.0.0&#xff0c;请问可以划分为多少个子网&#xff1f; 并写出每个子网的子网号&#xff1f; 三、将C类网119.181.25.0划分…

Docker容器添加映射端口

方式一 简单粗暴&#xff08;需要等一段时间&#xff09; 直接给现在容器停了&#xff08;当然你要不想停也可以&#xff0c;只是打包会慢一点&#xff0c;当然我是没出意外&#xff0c;如果你怕出现特殊情况&#xff0c;那就先把容器停了&#xff09;&#xff0c;然后把这个容…

SSL证书自动化管理有什么好处?如何实现SSL证书自动化?

SSL证书是用于加密网站与用户之间传输数据的关键元素&#xff0c;在维护网络安全方面&#xff0c;管理SSL证书与部署SSL证书一样重要。定期更新、监测和更换SSL证书&#xff0c;可以确保网站的安全性和合规性。而自动化管理可以为此节省时间&#xff0c;并避免人为错误和不必要…

Oracle命令大全

文章目录 1. SQL*Plus命令&#xff08;用于连接与管理Oracle数据库&#xff09;2. SQL数据定义语言&#xff08;DDL&#xff09;命令3. SQL数据操作语言&#xff08;DML&#xff09;命令4. PL/SQL程序块5. 系统用户管理6. 数据备份与恢复相关命令1. SQL*Plus命令&#xff08;用…

App开发——国际化多语言的实现

1.引言 我们当前正处于一个全球化的世界&#xff0c;所以我们开发的 App 也会有很大的概率&#xff0c;需要满足国际化多语言的需求。今天刚好看到有个小伙伴遇到了这个需求需要实现&#xff0c;这里就借此机会&#xff0c;简单讲解一下&#xff0c;在 YonBuilder移动开发 技术…

如何使用JS逆向爬取网站数据

引言&#xff1a; JS逆向是指利用编程技术对网站上的JavaScript代码进行逆向分析&#xff0c;从而实现对网站数据的抓取和分析。这种技术在网络数据采集和分析中具有重要的应用价值&#xff0c;能够帮助程序员获取网站上的有用信息&#xff0c;并进行进一步的处理和分析。 基…

golang利用redis和gin实现保存登录状态,校验登录

保存用户登录状态&#xff0c;一般常用的方式有两种 一、生成token&#xff0c;然后token保存到数据库用户表里面&#xff0c;每次登录的时候&#xff0c;自动更新&#xff0c;容纳后每次用的时候&#xff0c;去取出来校验&#xff0c;这种方式&#xff0c;数据库压力大&#…