SpringBoot从yml配置文件中读常用参数值实例方法
作者:菜弟弟 发布时间:2021-07-01 11:12:04
SpringBoot现在基本上都是使用application-XXX.yml(生产环境为pro,开发测试环境为dev)来配置项目中的一些配置条件,在springboot中还可以通过从yml文件中将yml中的数据直接读取出来。
1.yml文件(这里设置参数的时候往往设置两层前缀,避免在调用的时候该属性中的部分参数名与计算机中的某些名字冲突)
test:
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 12
2.在JavaBean中读取参数值,并且将读取出来的值赋予到指定的属性上
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "testdemo.person":配置文件中哪个下面的所有属性进行一一映射(yml文件中的参数名要和JavaBean中的属性名保持一致)
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "testdemo.person")
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;
}
3.pom.xml文件中导入依赖配置(注:这里可能需要启动一下项目,使之生效)
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4.@value 注解获取yml配置文件中的数据,以及@Validated进行数据校验
@Component
@Validated
public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property> * <bean/>
*/
//lastName必须是邮箱格式
@Value("${person.last-name}")
private String lastName;
@Value("#{11*2}")
private Integer age;
@Value("true")
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
5.@ConfigurationProperties(prefix = "person") 和 @value的区别
| | @ConfigurationProperties | @Value |
| ---------- |------------------------ | ------ |
| 功能 | 批量注入配置文件中的属性 | 一个个指定 |
| 松散绑定(松散语法) | 支持 | 不支持 |
| SpEL | 不支持 | 支持 |
| JSR303数据校验 | 支持 | 不支持 |
| 复杂类型封装 | 支持 | 不支持 |
6.总结
配置文件yml还是properties他们都能获取到值;
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
来源:https://www.cnblogs.com/vegetableDD/p/11968261.html
猜你喜欢
- 通常在 java 中对文本、网络资源等操作起来是很繁杂的,要声明,读取,关闭三个阶段,还得考虑异常情况。假设我们要读取一段文本显示到控制台,
- C# 的类型转换有显式转型 和 隐式转型 两种方式。显式转型:有可能引发异常、精确度丢失及其他问题的转换方式。需要使用手段进行转换操作。隐式
- 1. 启动 Redis Server启动 redis server,如下图所示,端口号 6379:2. 工程实例2.1 工程目录工程目录如下
- 昨天有个刚学java的师弟发了个程序给我,说死活编译不过,老是报编码问题,自己试了一下,也出问题了...当我们编辑了一个Java源文件保存时
- 本文实例讲述了java之swing下拉菜单实现方法。分享给大家供大家参考。具体如下:import java.awt.*;import jav
- 编写一个简单的mybatis进行插入数据的实例1 数据库建表 其中建表dob=Date of Birth 的意思create table s
- java 中cookie的详解Java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的
- Java 中的内部类这是一个 Java 内部类的简单实现:public class OutterJava { pr
- 本文实例为大家分享了java贪吃蛇游戏展示的具体代码,供大家参考,具体内容如下1、采用MVC(model、view、control)框架模式
- 在此附上超详细JDK1.8安装与配置超详细JDK1.8安装与配置一、卸载JDK应用程序①在开始处,点击设置②点击应用③点击程序和功能④打开程
- 这篇文章主要介绍了SpringBoot 使用Mybatis分页插件实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 在Java编程中,使用private关键字修饰了某个成员,只有这个成员所在的类和这个类的方法可以使用,其他的类都无法访问到这个private
- Java7引入了Fork Join的概念,来更好的支持并行运算。顾名思义,Fork Join类似与流程语言的分支,合并的概念。也就是说Jav
- StringRedisTemplate与RedisTemplate区别点两者的关系是StringRedisTemplate继承RedisTe
- 概述本文介绍 Spring Boot 项目中整合 ElasticSearch 并实现 CRUD 操作,包括分页、滚动等功能。添加Maven依
- 老生常谈的配置 但是还是需要说明一下EurekaApplication @EnableEurekaServer指定为server端
- 目录前言Maven依赖代码前言在工作中是否会遇到实用websocket客户端连接服务端的时候,网络波动,服务端断连的情况。会导致客户端被动断
- 一、Java并发是什么?用学术定义来说就是并发:同一时间段,多个任务都在执行 (单位时间内不一定同时执行);简单来说就是,同一个时间段,让计
- 一、首先我们先创建一个Maven项目把我们需要的包先准备好 1.打开pom.xml文件引入依赖,以下是整个pom.xml文件<
- 正则: “.”和"\""."点儿,在正则表达式中表示任意一个字符。"\"在正则表