当前位置: 首页 > news >正文

SpringBoot从配置文件中获取属性的方法

方式一:@Value

基本类型属性注入,直接在字段上添加@Value("${xxx.xxx}")即可.注意这里用的是$,而不是#,@Value注入的属性,一般其他属性没有关联关系。

配置文件

user:name: Manaphyage: 19sex: male
@RestController
public class ConfigPropertiesController {@Value("${user.name}")private String name;@Value("${user.age}")private Integer age;@Value("${user.sex}")private String sex;@GetMapping("/user")public String getUser() {return "{name:" + name + ",age:" + age + ",sex:" + sex + "}";}
}

方式二:@ConfigurationProperties

配置文件

person:lastName: helloage: 18boss: falsebirth: 2017/12/12maps: {k1: v1,k2: v2}lists:- lisi- wangwudog:name: 小狗age: 12

JavaBean

/*** 将配置文件中配置的每一个属性的值,映射到这个组件中* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;* prefix = "person":配置文件中哪个下面的所有属性进行一一映射* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能*/
@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {private String lastName;private Integer age;private Boolean boss;private Date birth;private Map<String, Object> maps;private List<Object> lists;private Dog dog;}@Data
class Dog {private String name;private Integer age;
}

Controller层

@RestController
public class PersonController {@Autowiredprivate Person person;@GetMapping("/person")public Person getPerson() {return person;}
}

运行结果如下
在这里插入图片描述

我们可以导入配置文件处理器,以后编写配置就有提示了

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

注意:使用@ConfigurationProperties注入属性时如果只给属性提供get方法,会报错

/*** yml配置*/
sms:region-id: cn-shanghaiaccess-key-id: 123access-key-secret: 123sign-name: 叮咚买菜/*** 实体类*/
@Getter
@Component
@ConfigurationProperties(prefix = "sms")
public class SmsProperties {private String regionId;private String accessKeyId;private String accessKeySecret;
}/*
报错
Description:Failed to bind properties under 'sms' to com.example.producer.producerdemo.util.SmsProperties:Property: sms.access-key-idValue: 123Origin: class path resource [application.yml] - 51:18Reason: java.lang.IllegalStateException: No setter found for property: access-key-idAction:Update your application's configuration
*/

@Value和@ConfigurationProperties比较

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties。

相关文章:

SpringBoot从配置文件中获取属性的方法

方式一&#xff1a;Value 基本类型属性注入&#xff0c;直接在字段上添加Value("${xxx.xxx}")即可&#xff0e;注意这里用的是$&#xff0c;而不是#&#xff0c;Value注入的属性&#xff0c;一般其他属性没有关联关系。 配置文件 user:name: Manaphyage: 19sex: m…...

oracle物化视图

物化视图定义 视图是一个虚拟表&#xff08;也可以认为是一条语句&#xff09;&#xff0c;基于它创建时指定的查询语句返回的结果集&#xff0c;每次访问它都会导致这个查询语句被执行一次&#xff0c;为了避免每次访问都执行这个查询&#xff0c;可以将这个查询结果集存储到…...

基于ssm校园线上订餐系统的设计与实现论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…...

鸿蒙南向开发—OpenHarmony技术编译构建框架

概述 OpenHarmony编译子系统是以GN和Ninja构建为基座&#xff0c;对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统&#xff0c;该系统提供以下基本功能&#xff1a; 以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系…...

Android Jetpack学习系列——Navigation

写在前面 Google在2018年就推出了Jetpack组件库&#xff0c;但是直到今天我才给重视起来&#xff0c;这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里&#xff0c;我一直在尝试做一套自己的组件库&#xff0c;帮助自己快速开发&#xff0c;虽然也听说过Jetpack&#…...

编程语言的新趋势

随着科技的飞速发展&#xff0c;IT行业经历了巨大的变革&#xff0c;其中编程语言作为技术生态的核心要素&#xff0c;其演变趋势对整个行业影响深远。从过去到现在&#xff0c;再到未来&#xff0c;编程语言的发展都呈现出明显的时代特征。本文将探讨当前IT行业的现状&#xf…...

C++:类和对象(2)

目录 1.strcut和class的区别 2.将成员属性设置为私有 3.对象的初始化和清理 3.1 构造函数和析构函数 3.1.1 构造函数语法 3.1.2 析构函数语法 3.1.3 检验 3.2 构造函数的分类和调用 3.3 拷贝构造函数调用 1.strcut和class的区别 struct和class的唯一区别在于默认的访问…...

【React系列】网络框架axios库的使用

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. axios库的基本使用 1.1. 网络请求的选择 目前前端中发送网络请求的方式有很多种&#xff1a; 选择一:传统的Aj…...

pygame学习(二)——绘制线条、圆、矩形等图案

导语 pygame是一个跨平台Python库(pygame news)&#xff0c;专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生&#xff0c;提供图像模块&#xff08;image&#xff09;、声音模块&#xff08;mixer&#xff09;、输入/输出&#xff08;鼠标、键盘、显示屏&#xff09;模…...

TCL学习笔记(持续更新)

前言&#xff1a; TCL&#xff08;tool common language&#xff09;是一种通用工具语言&#xff0c;很多eda tool都支持tcl&#xff0c;学习了解一些tcl基本语法还是很有必要的。 1&#xff1a;基础概念 解释器&#xff1a; #!/usr/bin/tclsh 打印&#xff1a; puts -> p…...

Xpath的问题:为什么在DOM中确定存在(可见)的元素,用//表达式匹配不到(附解决办法)

今天遇到一个很有意思的问题&#xff0c;我的爬取的目标页面上有时会出现一个弹窗&#xff0c;它挡住我点击其它按钮了&#xff0c;我想找到它的关闭按钮&#xff0c;自动点击一下关闭掉&#xff0c;本来是很简单的事情&#xff0c;但偏偏出问题了&#xff0c;DOM中看到的html是…...

有没有游泳可以戴的耳机?游泳耳机入耳式好,还是骨传导好

游泳是一项既能锻炼身体又能让人放松心情的运动。我们知道&#xff0c;音乐能够为我们的水上时光增添更多的乐趣。那么&#xff0c;在众多游泳耳机中&#xff0c;如何选择一款既适合自己的需求又具备良好性能的产品呢&#xff1f; 首先&#xff0c;我们要了解的是&#xff0c;…...

【绘图软件】自用安装教程

链接&#xff1a;https://pan.baidu.com/s/17r9Pr460FzkULU7fTr91_w?pwdftv7 提取码&#xff1a;ftv7 --来自百度网盘超级会员V6的分享解压并且右键打开set up 解压crack软件前需要退出杀毒软件&#xff0c; 关闭实时保护 域网络关闭&#xff0c;专用网络关闭&#xff0…...

AIGC时代-GPT-4和DALL·E 3的结合

在当今这个快速发展的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了我们生活中不可或缺的一部分。从简单的自动化任务到复杂的决策制定&#xff0c;AI的应用范围日益扩大。而在这个广阔的领域中&#xff0c;有两个特别引人注目的名字&#xff1a;GPT-4和D…...

springBoot集成RabbitMQ实现(直连模式\路由模式\广播模式\主题模式)的消息发送和接收

该项目介绍了springboot如何集成rabbitMQ消息中间件,实现(直连模式\路由模式\广播模式\主题模式)的消息发送和接收 pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId...

Attention机制

目录 提出背景 Attention原理 Attention机制本质思想 Attention机制总结 改进&#xff1a;Self-Attention 前置知识&#xff1a;RNN&#xff0c;LSTM/GRU 提出背景 Attention模型是基于Encoder-Decoder框架提出的。Encoder-Decoder框架&#xff0c;也就是编码-解码框架&…...

Rust 常用的第三方库

Rust 的标准库虽然已经很强大&#xff0c;但如果恰当地使用第三方库&#xff0c;可以大大改善编程效率。以下是一些常用的 Rust 第三方库。 tokio ---- 最通用的异步编程库&#xff0c;几乎可以说是行业标准了&#xff0c;大量的其它库依赖于tokio。reqwest ---- HTTP 客户端库…...

构建高可用性Java应用:介绍分布式系统设计与开发

构建高可用性Java应用需要考虑许多因素&#xff0c;其中之一是设计和开发分布式系统。分布式系统是由多个独立计算机或节点组成的系统&#xff0c;这些节点通过网络连接&#xff0c;共同完成一项任务。 在分布式系统设计和开发中&#xff0c;有几个关键方面需要考虑&#xff1…...

x-cmd pkg | gitui - git 终端交互式命令行工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 gitui 由 Stephan D 于 2020 年使用 Rust 语言构建的 git 终端交互式命令行工具&#xff0c;旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x gitui 即可自动下载并使用 在终端运行 eval "$(curl https:/…...

javaWeb案例知识点

一.rest风格编程 二.综合案例结构 三.分页查询 分页插件PageHelper 四.部门管理开发 五.员工管理开发 六.文件上传...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...