Spring Boot配置文件

ops/2024/9/23 2:52:22/

配置文件

分为两种配置文件

properties、yml

这两配置文件的语法是不同的

他们两个可以共存,但实际开发只会用其中一种,统一

如果两个同时存在,会优先加载properties配置文件,才会加载yml配置文件。

如果两个配置文件配置了相同的内容,那么会以properties中的配置为主

properties配置文件

语法

K.V=

server.port=8081

从配置文件中读取自定义K.V值

配置文件

MyKey.key=MX

java文件

java">//格式要求 必须是 "${}"  从配置文件获取,放入新的变量内@Value("${MyKey.key}")private String mykey;@RequestMapping("hi")public String hi(){return "Hi,"+mykey;//打印}

properties的优点

1.格式简单 K.V值

properties的缺点:

相同的前缀需要重复写,不够简便

编码格式默认不是UTF8 重新打开,中文会乱码

解决方案 修改默认编码格式

yml配置文件

可读性高,写法简单

支持更多数据类型 清单,散列表,标量等数据形态

支持更多的编程语言,不止支持java 还支持goland php ruby python..等等

yml默认为UTF8 重新打开 不会乱码

语法

k: v (v前面有空格 不能忘了)

单级目录

java">MyKey: MX

多级目录

java">spring:datasource:url: jdbc:mysql://127.0.0.1:3306/my?characterEncoding=utf8name: rootpassword: 123456

获取配置文件的值

yml

java">MyKey: MX

java文件

java">//获取yml的信息@Value("${MyKey}")private String ymlKey;@RequestMapping("hi")public String hi(){return "Hi,"+mykey+" port: "+prot+" ymlkey: "+ymlKey;//打印}

示例

yml

java">myname:name1: xiao \n liname2: 'xiao \n wang'name3: "xiao \n qiang"

java文件

java">@Value("${myname.name1}")private String name1;@Value("${myname.name2}")private String name2;@Value("${myname.name3}")private String name3;@RequestMapping("/hi")public String hi(){System.out.println("--------------");System.out.println(name1);System.out.println("--------------");System.out.println(name2);System.out.println("--------------");System.out.println(name3);return "Hi,"+mykey+" port: "+prot+" ymlkey: "+ymlKey;//打印}

想要这个方法调用 必须到网站上刷新一次 让这个方法执行一次 才可以看到打印信息

可以看到 双引号会执行里面的特殊符号 而没加或者加单引号的 会原样打印

获取配置文件的类数据 并且存储到spring中

yml

java">#两种写法都是可以的
#原始写法
student:id: 1name: zhangsanage: 18#行内写法
student2: {id: 2,name: lisi,age: 20}

java">@Component
@ConfigurationProperties(prefix = "student2")
//从配置文件中读取数据 配置到当前类中 并且存入Spring内
//使用@ConfigurationProperties注解时,实体类不能没有set方法, 因为@ConfigurationProperties类是通过set方法把配置文件的数据赋值给类内字段的
public class Student {public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}private int id;private String name;private int age;
}

启动类

java">//从Spring中获取@Autowiredprivate Student student;@RequestMapping("/student")public String student(){return "ID: "+student.getId()+" Name: "+ student.getName()+" age: "+student.getAge();}

获取配置文件中的集合数据

java">#原始写法
mylist:dbtype:- list1- list2- list3#行内写法
ulist: {name: [name1,name2,name3]}

java">@Setter
@Getter
@ConfigurationProperties(prefix = "mylist")
//ConfigurationProperties注解是通过set方法注入的,所以dbtype必须和配置文件中的文件一致
@Component
public class mylist {private List dbtype;
}
java">@Setter
@Getter
@ConfigurationProperties(prefix = "ulist")
//ConfigurationProperties注解是通过set方法注入的,所以name必须和配置文件中的文件一致
@Component
public class ulist {private List name;
}

启动类

java">   @Autowiredprivate mylist mylist;@Autowiredprivate ulist ulist;@RequestMapping("/mylist")public String mylist(){return mylist.getDbtype().get(0)+" "+mylist.getDbtype().get(1)+" "+mylist.getDbtype().get(2)+" size: "+mylist.getDbtype().size();}@RequestMapping("/ulist")public String ulist(){return ulist.getName().get(0)+" "+ulist.getName().get(1)+" "+ulist.getName().get(2)+" size: "+ulist.getName().size();}

配置环境文件

在实际开发中会用到多种环境 在切换环境时 修改代码是比较繁琐的,所以可以创建环境文件

环境文件名必须是以application-开头 后续名字根据实际定

在主配置文件下,切换环境

只需要切换文件名,就可以完成切换环境


http://www.ppmy.cn/ops/41886.html

相关文章

计算三角形面积

描述 编写程序&#xff0c;输入三角型的三条边长&#xff0c;求其面积。 注意&#xff1a;对于不合理的边长输入要输出数据错误的提示信息 输入描述 第一行为整数n&#xff0c;n<100&#xff0c;代表数据组数 其后n行&#xff0c;每行3个整数&#xff0c;以空格分隔 输…

HNU-算法设计与分析-作业5

第五次作业【回溯算法】 文章目录 第五次作业【回溯算法】<1> 算法分析题5-3 回溯法重写0-1背包<2> 算法分析题5-5 旅行商问题&#xff08;剪枝&#xff09;<3> 算法实现题5-2 最小长度电路板排列问题<4> 算法实现题5-7 n色方柱问题<5> 算法实现…

命令行中,Python 想使用本地环境,但总是显示为Anaconda的虚拟环境

电脑环境 Python 本地环境&#xff08;Python3.9.5&#xff09;Anaconda 虚拟环境&#xff08;Python3.8.8&#xff09; 遇到的问题 在cmd 中&#xff0c;我想在本地环境使用 Python、pip &#xff0c;但它却是一直识别成Anaconda的虚拟环境。 解决方法 环境变量配置中&am…

音频筑基:200字说清声和音的区别(Sound/Audio/Music/Voice/Speech辨析)

音频筑基&#xff1a;200字说清声和音的区别(Sound/Audio/Music/Voice/Speech辨析) 音频筑基&#xff1a;200字说清声和音的区别 音频筑基&#xff1a;200字说清声和音的区别(Sound/Audio/Music/Voice/Speech辨析) 梳理如下&#xff1a; 声音 声(Sound) 广义&#xff1a;机械波…

Flutter 中的 Drawer 小部件:全面指南

Flutter 中的 Drawer 小部件&#xff1a;全面指南 在移动应用设计中&#xff0c;Drawer 是一种常见的导航组件&#xff0c;它提供了一种从屏幕边缘滑出菜单的方式&#xff0c;让用户可以快速切换应用的不同部分。在 Flutter 中&#xff0c;Drawer 小部件实现了这一功能&#x…

码农慎入 | 入坑软路由,退烧IDC,Homelab折腾记

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 俗话说&#xff0c;入门软路由&#xff0c;退坑IDC 这一期&#xff0c;我们将深入探讨一个许多科技爱好者…

函数栈帧的创建和销毁(详细理解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;c语言课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 问题&#xff1a; 1.ebp&#xff0c;esp两个寄存器用来维护函数栈帧 2.main函数也一个函数&#…

Flutter 中的 Builder 小部件:全面指南

Flutter 中的 Builder 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Builder 小部件是一个功能强大的工具&#xff0c;它允许开发者在 widget 树中动态地构建 widgets。Builder 通常用于那些需要根据某些条件或者数据变化来重新构建其子 widget 的情况。本文将详细介…