SpringBoot配置文件相关

news2024/12/24 2:53:53

SpringBoot配置文件内容分为两类:

     1.Spring自带的配置,比如server.port(这玩意就自己躺在application.properties里)

     2.自定义的配置

配置文件的格式分为两种

     1.properties格式

     2.yml格式

properties和yml的区别

    1.通用性

properties是SpringBoot项目默认的配置文件!他已经很老了,只支持Java,yml是新的配置格式,它支持很多种种语言,如如: Java,C/C++, Ruby, Python, Perl, C#, PHP等

    2.简易性

先看properties 这


spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

​

这三个参数spring.datasource重复写了三次,冗余!

再看这个yml 多简单!

spring:
  datasource:
    url: 
    username: 
    password: 

3.优先级

 properties比yml优先级高

 properties的使用

一、注册配置

直接在这个application.properties里面写!

server.port=8080

mykey=keyy!!

二、使用 

然后在demo目录下面创建一个类

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class Read {
    @Value("${mykey}")
    private String key;
    @PostConstruct
    public void postConstruct(){
        System.out.println("success:"+key);
    }
}

 @Component是五大类注解 想用@Value注解就必须先使用五大类注解

@Value是要引入某个配置   这个格式一定要记住括号里面要用""包裹住${} 然后括号里面才是自己定义的key名(如果我想引用port的话 里面就要用@Value("${server.port}")     也就是说这个key的全名都要带上) 

然后用一个String接收这个内容 变量起啥名都可以

  yml的使用

在resources路径下面创建一个application.yml文件(和.properties并列)

(一定要叫这个名字才能识别!因为“约定大于配置”!!)

看刚才的例子(这回递归了)

 我们不用.来分级了而是像我们做文件的多级目录一样

spring:一级 datasource:二级 url username password 三级

现在我们直接开始使用yml

一、准备配置

我们在这个.yml文件中写入

server:
  port: 8090

mystr:
  str1: str1
  str2: str2
  str3: str3

 注意!注意!注意!这个:后面要加一个空格 不然后面的内容不会高亮(也不会识别)

二、使用

这个和之前.properties没有区别

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class Read {
    @Value("${mystr.str1}")
    private String str1;
    @PostConstruct
    public void postConstruct(){
        System.out.println("success:"+str1);
    }
}

 两种配置都支持多种类型返回(需要对应类型变量接收),这里用yml举例

server:
  port: 8090

int:
  value: 18
float:
  value: 1.1
boolean:
  value: true
package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class Read {
    @Value("${int.value1}")
    private int intvalue;
    @Value("${float.value2}")
    private float floatvalue;
    @Value("${boolean.value3}")
    private boolean booleanvalue;
    @PostConstruct
    public void postConstruct(){
        System.out.println("int:"+intvalue);
        System.out.println("float:"+floatvalue);
        System.out.println("boolean:"+booleanvalue);
    }
}

还有一点就是 字符串默认是不加单 双引号的 如果加了双引号会使字符串里面的转义字符生效

单引号会使特殊字符变回正常字符

str.str1=helloworld!
str.str2="hello\nworld"!
package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class Read {
    @Value("${str.str1}")
    private String str1;
    @Value("${str.str2}")
    private String str2;
    @PostConstruct
    public void postConstruct(){
        System.out.println("str1:"+str1);
        System.out.println("str2:"+str2);
    }
}

 

 yml配置对象

有两种写法

student1:
  name: 张三
  age: 18

student2: {name: 李四,age: 20}

第一种是原始写法

第二种是行内写法 行内写法注意每个key-value之间用逗号分割 且:后面一定要有空格

对象的使用

@Component
@ConfigurationProperties(prefix="student1")
public class Student {
    private String name;
    private int age;

    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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

对象的使用不能用@Value要用@ConfigurationProperties注解 后面的参数是key

注意一定要有setter方法才可以写入!!  (getter,tostring是我一键生成的....)

或者在这个位置加一个@Data注解 就等于写了Setter和getter方法了! 

yml配置集合

和类的配置大致相同

list:
  name:
    张三
    李四
    王五
package com.example.demo;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@ConfigurationProperties(prefix="list")
@Data
public class Student {
    private List<String> name;

    @Override
    public String toString() {
        return "Student{" +
                "name=" + name +
                '}';
    }
}

 唯一需要注意的是 

 这两个必须相同  其实仔细想想蛮好理解 list下面可以有多个二级  上面的prefix圈住一个list

那怎么确定是哪个二级呢?那就只能用变量名去确定了

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class Read {
    @Autowired
    Student student;
    @PostConstruct
    public void postConstruct(){
        System.out.println(student);
    }
}

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

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

相关文章

Baumer工业相机堡盟工业相机软件CameraExplorer常见功能使用说明

Baumer工业相机堡盟工业相机软件CameraExplorer常见功能使用说明 Baumer工业相机Baumer工业相机图像采集功能Baumer工业相机图像基本参数设置 Baumer工业相机 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计…

诺亚财富财报不及预期,收入大幅下滑27.8%,股价也已下跌26%

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 诺亚财富2022财年业绩和管理层评论 在此前于2023年3月下旬举行的2022年第四季度财报会议上&#xff0c;诺亚财富(NOAH)强调&#xff0c;“我们希望将2022年的痛苦转化为2023年的收获。”虽然诺亚财富在财报会议上没有提供2…

三子棋的实现【C语言】

完成一个三子棋游戏的实现包括三部分 test.c 测试游戏 game.c 实现游戏 game.h 声明游戏 菜单 首先我们完成游戏的菜单部分 游戏部分 完成三子棋我们需要完成棋盘的创建&#xff0c;玩家下棋&#xff0c;电脑下棋&#xff0c;判断胜负&#xff0c;以及将棋盘展现给玩家&a…

WebApi安全性 使用TOKEN+签名验证

&#xff08;2&#xff09;在请求头中添加timespan&#xff08;时间戳&#xff09;&#xff0c;nonce&#xff08;随机数&#xff09;&#xff0c;staffId&#xff08;用户Id&#xff09;&#xff0c;signature&#xff08;签名参数&#xff09;    //加入头信息request.Hea…

shell中函数的应用(题型列举)

1、编写函数&#xff0c;实现打印绿色OK和红色FAILED 判断是否有参数&#xff0c;存在为Ok&#xff0c;不存在为FAILED 第一步&#xff1a;进入脚本文件进行编辑 第二步&#xff1a;编辑函数脚本文件 colour() {if [ $# -ne 0 ];thenecho -e "\033[32m OK \033[0m"e…

3D樱花照片墙、3D樱花照片墙有文字、红蓝爱心、流星雨3D旋转相册、文字加爱心

前端页面百度云盘自提 3D樱花照片墙 3D樱花照片墙有文字 红蓝爱心 流星雨3D旋转相册 文字加爱心

数据治理之关键环节元数据管理开源项目datahub探索

文章目录 概述定义核心功能概念元数据应用其他开源 架构概览组件元数据摄取架构服务体系结构 本地部署环境要求安装摄取样例 摄取入门介绍核心概念命令行MySQL摄取示例配置ClickHouse摄取示例 概述 定义 datahub 官网地址 https://datahubproject.io/ 最新版本v0.10.2 datahub…

怎么将m4a转换成mp3?这三种方法不妨试试看吧

将M4A转换为MP3具有重要作用。首先&#xff0c;MP3格式是一种通用的音频格式&#xff0c;几乎所有的播放器和设备都支持它。而M4A格式则不如MP3格式广泛。如果我们想在多个设备上播放M4A音频文件&#xff0c;有时候需要将其转换为MP3格式。其次&#xff0c;M4A文件通常比MP3文件…

计算机专业含金量高的证书

目录 第一种证书&#xff1a;计算机技术与软件专业资格考试证书 第二种证书&#xff1a;微软认证 第三种证书&#xff1a;Oracle认证 第四种证书&#xff1a;思科认证 第五种证书&#xff1a;华为认证 第六种证书&#xff1a;红帽认证工程师 第七种证书&#xff1a;阿里…

Python每日一练(20230512) 跳跃游戏 V\VI\VII

目录 1. 跳跃游戏 V 2. 跳跃游戏 VI 3. 跳跃游戏 VII &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 跳跃游戏 V 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&a…

蒙层禁止下方页面滚动防抖动完美方案

学习链接 js如何禁止滚动条滚动&#xff0c;但不消失&#xff01; - 这个是完美解决方案&#xff08;在线demo示例&#xff09; 解决窗口滚动条消失而导致的页面内容抖动的问题 完美解决js 禁止滚动条滚动&#xff0c;并且滚动条不消失&#xff0c;页面大小不闪动 蒙层禁止…

【Python数据类型-元组】------- PYTHON基础11

内容目录 一、 元组1. 元组的构建2. 元组的索引3. 元组和列表的区别及相互转换3.1. 列表转为元组&#xff0c;通过内置函数tuple()实现&#xff0c;比如&#xff1a;3.2. 元组转为列表&#xff0c;通过内置函数list()实现 4. 元组的基本操作&#xff1a;更新&#xff0c; 删除&…

用于colmap重建结果、pcd/ply、6D位姿的点云可视化工具

工具介绍&#xff1a;提供一款用于点云可视化windows的工具 可视化的对象包括&#xff1a; 1、colmap重建结果 2、pcd\ply格式的点云 3、位姿R|t可视化 4、在线接收点python发送的坐标 其他功能&#xff1a;点云保存、颜色修改、点云隐藏、点云大小调整 工具地址&#xff1a…

Qt之QGraphicsEffect的简单使用(含源码+注释)

文章目录 一、效果示例图1.效果演示图片3.弹窗演示图片 二.问题描述三、源码CFrame.hCFrame.cppCMainWindow.hCMainWindow.cpp 总结 一、效果示例图 1.效果演示图片 3.弹窗演示图片 二.问题描述 &#xff08;因为全是简单使用&#xff0c;毫无技巧&#xff0c;直接描述问题&a…

计算机视觉的深度学习 Lecture3:Linear Classifiers 笔记 EECS 498.008

注意到每一行完成一类的分类 事先思考一下loss的可能值有助于debug。如果W随机为高斯分布&#xff0c;μ为0.001&#xff0c;那么下面sj-syi就会很小&#xff0c;Li的值接近C-1&#xff0c;C为分类数 正则化表达式&#xff1a; 如果score都是随机很小的数&#xff0c;近似意…

博客管理系统--博客详情页、登录页

登录页实现强制登录 URL解决后&#xff1b;现在到查看全文按钮。我们点击这个查看全文我们就跳转到博客详情页。 我们希望就是在这个页面&#xff1b;把这些写死的数据换成从后端获取的。 1&#xff1a;约定前后端交互接口 请求&#xff1a;GET /blog?blogId1 (这样子写和博…

总结848

学习目标&#xff1a; 月目标&#xff1a;5月&#xff08;张宇强化前10讲&#xff0c;背诵15篇短文&#xff0c;熟词僻义300词基础词&#xff09; 周目标&#xff1a;张宇强化前3讲并完成相应的习题并记录&#xff0c;英语背3篇文章并回诵 每日必复习&#xff08;5分钟&#…

【连续介质力学】向量

向量的代数操作 加法 a ⃗ \vec a a , b ⃗ \vec b b 为任意向量 c ⃗ a ⃗ b ⃗ b ⃗ a ⃗ \vec c \vec a \vec b \vec b \vec a c a b b a 减法 d ⃗ a ⃗ − b ⃗ \vec d \vec a- \vec b d a −b 标量乘法 λ a ⃗ \lambda \vec a λa , 与 a ⃗ \vec a a 相同…

ubuntu18 使用matplotlib画图

一、安装virtualenvwrapper 1.确认virtualenvwrapper是否已安装&#xff1a; 打开Termianl终端&#xff0c;执行指令&#xff1a;which virtualenvwrapper.sh查询virtualenvwrapper.sh的路径&#xff0c;如果没有提示&#xff0c;则表明virtualenvwrapper.sh没有安装。 2.安…

Codeforces Round 871 (Div. 4) G 记忆化搜索+二分 你没见过的解法!

G. Hits Different 记dp数组为答案数组 首先 dp[2] 2 2 2^2 22 1 2 1^2 12 dp[3] 3 2 3^2 32 1 2 1^2 12 dp[5] 2 2 2^2 22 3 2 3^2 32 1 2 1^2 12 不难发现dp[5]dp[2]dp[3]-dp[1] 同理dp[25]dp[18]dp[19]-dp[13] 接下来就是愉快的找公式时间 观察到题目中给的每一层塔的级数 (…