SpringBoot——配置文件

news2025/2/27 17:25:32

项目中有许多公共使用的变量,例如端口号,连接数据库的配置,还有我们自己创建的变量,这些可以放到SpringBoot的配置文件中统一调配使用
在这里插入图片描述

properties

基本语法格式:

key=value

例如配置项目的端口号为8888:

server.port=8888

在配置文件中自定义一个变量:

myTest=zhangsan

在类中读取该变量:
使用@Value()注解

@Controller//当前类为控制器
@ResponseBody//返回的是数据,而不是页面
public class TestController {
    @Value("myTest")
    private String myTest;

	@RequestMapping("/getConfig")
    public String getConfig(){
        return myTest;
    }
}

在这里插入图片描述
可以看到最终的结果与我们预期的不一致,这是因为@Value(“myTest”)的含义是将"myTest"字符串赋值给了myTest变量

正确的写法应该是:

@Value(${myTest})

在这里插入图片描述
还可以使用配置文件链接数据库:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=1234

yml

基本语法格式:

key: value

注意:冒号后面有一个空格,不可以省略
例如使用yml进行端口号的变更:

server:
  port: 6666

例如使用yml进行数据库链接:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
    username: root
    password: 1234

需要注意的是,存储字符串时不用加"",如果加了双引号,转义字符会转义

application.yml:

myString: 你好,\n世界
myString2: '你好,\n世界'
myString3: "你好,\n世界"

TestController:

@Controller//当前类为控制器
@ResponseBody//返回的是数据,而不是页面
public class TestController {
    @Value("${myString}")
    public String myString;

    @Value("${myString2}")
    public String myString2;

    @Value("${myString3}")
    public String myString3;
    @PostConstruct
    public void postConstruct(){
        System.out.println("myString:" + myString);
        System.out.println("myString2:" + myString2);
        System.out.println("myString3:" + myString3);
    }
}

在这里插入图片描述

yml存储对象

例如存储student对象:

student:
  id: 1
  name: xiao
  age: 19

还可以写成一行的形式:

student: {id: 1,name: xiao,age: 19}

专门创建一个类,属性名和配置中的key值相同,并且需要包含setter和getter方法(这里使用lombok的@Data)

package com.example.demo;

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

@ConfigurationProperties("student")
@Component
@Data
public class StudentComponent {
    private int id;
    private String name;
    private int age;
}

在Controller类中可以获取student对象

@Controller//当前类为控制器
@ResponseBody//返回的是数据,而不是页面
public class TestController {
	@Autowired
    private StudentComponent studentComponent;
    
    @PostConstruct
    public void postConstruct(){
        System.out.println(studentComponent);
    }
}

在这里插入图片描述

配置集合

yml文件:

all-star:
  name:
    - curry
    - lebron
    - durant

还可以写成一行的格式:

all-star: {name: [curry,lebron,durant]}

AllStarComponent文件:

@Component
@Data
@ConfigurationProperties("all-star")
public class AllStarComponent {
    private List<String> name;
}

Controller文件:

@Controller//当前类为控制器
@ResponseBody//返回的是数据,而不是页面
public class TestController {
    @PostConstruct
    public void postConstruct(){
        System.out.println(allStarComponent);
    }
    @Autowired
    private AllStarComponent allStarComponent;
}

在这里插入图片描述

配置文件的使用

当我们一个项目中有多个配置文件,可以指定类使用哪个配置文件,以及编码格式

@PropertySource(value = "application.properties", encoding = "utf-8")

一个项目分为开发环境和生产环境,我们可以直接在配置文件中设置不同环境的配置文件
在这里插入图片描述
命名规范是前面必须是application,-后面的可以自定义
例如在开发环境中设置端口号为8888

# 配置开发环境
server:
  port: 8888

在生产环境中设置端口号为9999

# 配置生产环境
server:
  port: 9999

在application.yml中选择使用哪个环境的配置文件,这里了使用生产环境的

spring:
  profiles:
    active: prod

在这里插入图片描述
可以看到运行时端口号确实是9999

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

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

相关文章

Bean注入到Spring方式

扒一扒Bean注入到Spring的那些姿势 配置文件的方式就是以外部化的配置方式来声明Spring Bean&#xff0c;在Spring容器启动时指定配置文件。配置文件方式现在用的不多了&#xff0c;但是为了文章的完整性和连续性&#xff0c;这里我还是列出来了&#xff0c;知道的小伙伴可以自…

Jetson Xavier NX设备将opencv和tensorrt链接到conda环境

注意安装的时候先查看设备旧版本的opencv&#xff0c;卸载干净后再装。 Jetpack4.6 opencv4.1.1 conda安装 过程翻一下之前的博客把&#xff0c;下面是创建环境开始 conda create -n py36 python3.6.9 OPENCV_EXTRA_MODULES_PATH/home/ta/open/opencv_contrib-4.1.1/modul…

白银走势图如何做空?

做现货白银的好处是&#xff0c;我们可以在白银走势图上做空&#xff0c;不再像股票那样只能先卖后买&#xff0c;还能先卖后买&#xff0c;这样我们做投资就多了一份从容&#xff01;任何时候我们都能获得投资获利的机会&#xff0c;但是由于习惯了单向交易&#xff0c;我们要…

Sarsa算法讲解及实现

Sarsa算法讲解及实现 1. Q表格 我们使用表格来存储每一个状态 state, 和在这个 state 每个行为 action 所拥有的 Q 值。 Q即为Q&#xff08;s,a&#xff09;就是在某一时刻的 s 状态下(s∈S)&#xff0c;采取动作a (a∈A)动作能够获得收益的期望&#xff0c;环境会根据agent…

java嵌入式持久化消息队列SMQ,改造自FQueue

一、说明之前项目中一直使用ConcurrentLinkedQueue做为缓冲队列&#xff08;主要是单个项目内&#xff0c;单条改批量的场景&#xff0c;多个项目间使用的是rocketmq&#xff09;&#xff0c;虽然用着方便但是是纯内存的&#xff0c;如果项目发生异常崩溃内存队列中的数据就会全…

JavaSE学习day6 进制转换和idea的调试

1.进制 1.1 常见的进制分类(掌握) 学过计算机组成原理的同学可以跳过这里。 二进制 十进制 八进制 十六进制 1.2 二进制 计算机数据在底层存储和运算的时候&#xff0c;都是以二进制的形式操作的&#xff0c;了解不同的进制&#xff0c;便于我们对数据的运算过程理解的更…

个人博客推出了更多功能

背景 Web2.0的典型代表博客&#xff0c;吸引着粉丝们打造属于自己的个人博客&#xff0c;分享自己的学习经验&#xff0c;记录自己的日常生活。随着大厂的入局&#xff0c;我们可以很容易的申请自己的个人博客&#xff0c;但是弊端就是往往会被他们控制&#xff0c;甚至封号。…

汕头市农村生活污水治理“十四五”规划行动方案

汕头&#xff0c;简称“汕”&#xff0c;广东省辖地级市&#xff0c;北接潮州&#xff0c;西邻揭阳&#xff0c;南濒南海&#xff0c;东与台湾隔海相望&#xff0c;境内韩江、榕江、练江三江入海&#xff0c;是中国大陆唯一拥有内海湾的城市。今天就来为大家介绍&#xff0c;汕…

Windows系统实现命令行(CMD)关闭指定的IIS网站

一、需求说明我们部署在Windows服务器上的IIS网站&#xff0c;需要在特定的时间停止一会后在进行重新启动该网站。二、思路分析由于需要特定的时间停止后重启网站&#xff0c;则手动操作肯定是不行的&#xff0c;需要实现自动化操作&#xff1a;①特定时间操作可以使用Windows系…

聚观早报|王慧文要做「中国版 OpenAI」;Temu斥资近亿元赞助超级碗

点击蓝字 / 关注我们今日要闻&#xff1a;王慧文要做「中国版 OpenAI」&#xff1b;Temu斥资近亿元赞助超级碗&#xff1b;新东方在线股价收跌2.8%&#xff1b;ChatGPT带动的AIGC创业热潮要来了&#xff1b;传谷歌拆分其AR部门王慧文要做「中国版 OpenAI」 2 月 13 日&#xff…

CSS中的常见单位(px,%,em,rem,vw,vh,vmax,vmin,calc)

像素(px)&百分比(%) 像素(Pixel) 长度单位&#xff0c;相对于显示器屏幕分辨率而言&#xff0c;通常在不定义显示缩放比例的情况下&#xff0c;1px对应显示器屏幕上的一个像素点。早年的pc端展示的页面基本都用这个单位。 百分比(%) 相对长度单位&#xff0c;指占用的父…

电源模块 DC-DC直流升压正负高压输出12v24v转±110V±150V±220V±250V±300V±600V

特点效率高达80%以上1*2英寸标准封装电源正负双输出稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRA 1~40W系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36VDC标准&…

对比Hashtable、HashMap、TreeMap有什么不同?

第9讲 | 对比Hashtable、HashMap、TreeMap有什么不同&#xff1f; Map 是广义 Java 集合框架中的另外一部分&#xff0c;HashMap 作为框架中使用频率最高的类型之一&#xff0c;它本身以及相关类型自然也是面试考察的热点。 今天我要问你的问题是&#xff0c;对比 Hashtable、…

HTTP协议——详细讲解

目录 一、HTTP协议 1.http 2.url url的组成&#xff1a; url的保留字符&#xff1a; 3.http协议格式​编辑 ①http request ②http response 4.对request做出响应 5.GET与POST方法 ①GET ②POST 7.HTTP常见Header ①Content-Type:: 数据类型(text/html等)在上文…

JavaSE系列 打基础版

JavaSE 笔记记录P1 Java概述1.1 java编译1.2 认识JDK、JRE1.3 下载jdk和配置环境变量1.4 开发注意事项和开发细节1.5 学习java之我的需求1.6 转义字符1.7 注释1.8 代码规范1.9 dos命令 了解P2 变量数据类型变量基本使用数据类型转换P3运算符P4 控制结构P5 数组、排序和查找P6面…

突破压缩极限的AI语音编解码器

I. Speech Codecs语音编码的目的是在保持语音质量的前提下尽可能地减少传输所用的带宽&#xff0c;主要是利用人的发声过程中存在的冗余度和人的听觉特性达到压缩的目的。经过了多年的发展&#xff0c;目前语音编解码器大致可以分为以下几类&#xff1a;波形编码&#xff0c;将…

c++ 指针、引用和常量

指针、引用和常量的关系_夜悊的博客-CSDN博客 1. ① 指针是对象&#xff0c;引用不是对象&#xff08;在此可以理解为变量&#xff0c;一个变量是一个对象&#xff09; 指针不必须初始化引用只是为一个已经存在的对象所起的另一个名字&#xff08;别名&#xff09;&#xff…

亚马逊云科技汽车行业解决方案

当今&#xff0c;随着万物智联、云计算等领域的高速发展&#xff0c;创新智能网联汽车和车路协同技术正在成为车企加速发展的关键途径&#xff0c;推动着汽车产品从出行代步工具向着“超级智能移动终端”快速转变。 挑战无处不在&#xff0c;如何抢先预判&#xff1f; 随着近…

安装 GPU 版本的 tensorflow 完整版本

前言&#xff1a; 之前安装的 CPU 版本的 tensorflow 一直出问题&#xff0c;索性就直接安装 GPU 版本的 tensorflow 了&#xff08;有了GPU 就不能浪费&#xff09;。 安装过程&#xff1a; 1&#xff09;看自己有无 GPU&#xff0c;找到对应 GPU 的版本&#xff1a;任务管理…

C生万物 | 常量指针和指针常量的感性理解

文章目录&#x1f4da;引言✒常量指针&#x1f50d;介绍与分析&#x1f4f0;小结与记忆口诀✒指针常量&#x1f50d;介绍与分析&#x1f4f0;小结与记忆口诀&#x1f449;一份凉皮所引发的故事&#x1f448;总结与提炼&#x1f4da;引言 本文我们来说说大家很困惑的两个东西&am…