SpringBoot读取配置文件的几种方式
示例
user:
name: zhaotian
age: 18
sex: 男
@Value注解
@Value注解是Spring框架提供的用于注入配置属性值的注解,它可用于类的成员变量、方法参数和构造函数参数上。
@Data
@Component
public class MyBean {
@Value("${user.name}")
private String name;
@Value("${user.age}")
private int age;
}
调用方式
@Service
public class Test {
@Autowired
private MyBean myBean;
public void test(){
String name = myBean.getName();
}
}
静态变量static
@Data
@Component
public class MyBean {
public static String name;
@Value("${user.name}")
public void setName(String name){
this.name = name;
}
// 调用方式:MyBean.name;
private static Integer age;
@Value("${user.age}")
public void setAge(Integer age){
this.age = age;
}
public Integer getAge(){
return age;
}
// 调用方式:MyBean.getAge();
}
@ConfigurationProperties注解
@ConfigurationProperties注解是 SpringBoot 提供的一种更加便捷来处理配置文件中的属性值的方式,可以通过自动绑定和类型转换等机制,将指定前缀的属性集合自动绑定到一个Bean对象上。
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class MyBean {
private String name;
private int age;
// 调用方式如同@Value()一样
}
静态变量static
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class MyBean {
public static String name;
public void setName(String name){
this.name = name;
}
// 调用方式:MyBean.name;
private static Integer age;
public void setAge(Integer age){
this.age = age;
}
public Integer getAge(){
return age;
}
// 调用方式:MyBean.getAge();
}
@PropertySources 注解
使用自定义的配置文件,自定义的配置文件无法被应用自动加载,需要我们手动指定加载。
@PropertySources 注解只内置了PropertySourceFactory适配器,也就是说它只能加载.properties文件。
如果你想要加载一个.yaml类型文件,则需要自行实现yaml的适配器。
使用示例
在 src/main/resources/ 目录下创建自定义配置文件 redis.properties
redis.ip=127.0.0.1
redis.port=6379
在需要使用自定义配置文件的类上添加 @PropertySource 注解。
@Data
@Configuration
@PropertySource("classpath:classpath:redis.properties")
public class RedisConfig {
@Value("${redis.ip}")
private String ip;
@Value("${redis.port}")
private String port;
}
还可以指定多个配置文件,用逗号隔开。如下:
@PropertySources({
@PropertySource(value = "classpath:redis.properties",encoding = "utf-8"),
@PropertySource(value = "classpath:mysql.properties",encoding = "utf-8")
})
public class TestConfig {
}
@YamlComponent注解
如果yml文件中用---分隔了多个文档,我们可以使用@YamlComponent注解将每份文档映射到一个bean上,如:
user:
name: jack
---
user:
name: mary
@Component("first")
@YamlComponent(value = "user.first")
public class FirstProps {
private String name;
}
@Component("second")
@YamlComponent(value = "user.second")
public class SecondProps {
private String name;
}
自定义读取
如果上边的几种读取配置的方式你都不喜欢,我们可以直接注入PropertySources获取所有属性的配置队列。
@Slf4j
@SpringBootTest
public class CustomTest {
@Autowired
private PropertySources propertySources;
@Test
public void customTest() {
for (PropertySource<?> propertySource : propertySources) {
log.info("自定义获取 配置获取 name {} ,{}", propertySource.getName(), propertySource.getSource());
}
}
}
SpringBoot读取配置文件的几种方式的更多相关文章
- Spring Boot 入门系列(二十五)读取配置文件的几种方式详解!
在项目开发中经常会用到配置文件,之前介绍过Spring Boot 资源文件属性配置的方法,但是很多朋友反馈说介绍的不够详细全面.所以, 今天完整的分享Spring Boot读取配置文件的几种方式! S ...
- .net core 读取配置文件的几种方式
一.Json配置文件 1.这里的配置文件指的是下图 2.json配置文件示例 { "Logging": { "LogLevel": { "Defaul ...
- Springboot读取配置文件的两种方法
第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest ...
- Spring Boot读取配置文件的几种方式
Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口.这三种注解可以配合着@PropertySou ...
- spring-boot-route(二)读取配置文件的几种方式
Spring Boot提供了两种格式的配置文件,分别是properties 和 yml.Spring Boot最大的特点就是自动化配置,如果我们想修改自动化配置的默认值,就可以通过配置文件来指定自己服 ...
- java 学习笔记 读取配置文件的三种方式
package com.itheima.servlet.cfg; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...
- 关于spring读取配置文件的两种方式
很多时候我们把需要随时调整的参数需要放在配置文件中单独进行读取,这就是软编码,相对于硬编码,软编码可以避免频繁修改类文件,频繁编译,必要时只需要用文本编辑器打开配置文件更改参数就行.但没有使用框架之前 ...
- Servlet读取配置文件的三种方式
一.利用ServletContext.getRealPath()[或getResourceAsStream()] 特点:读取应用中的任何文件.只能在web环境下. private void text3 ...
- SpringBoot中读取配置文件的几种方式
1.读取application文件 在application.yml或者properties文件中添加: info: name: xiaoming age: 13 sex: 1 读取方式如下: imp ...
- Spring 读取配置文件的俩种方式
读取配置可通过 org.springframework.core.env.Environment 类来获取, 也可以通过@Value的方式来获取 注解形式: @PropertySource({&quo ...
随机推荐
- Go类型断言demo
Go类型断言demo package main import ( "bytes" "encoding/json" "fmt" "i ...
- keepalived(3)- keepalived+nginx实现WEB负载均衡高可用集群
目录 1. keepalived+nginx实现WEB负载均衡高可用集群 1.1 需求和环境描述 1.2 WEB集群部署 1.3 负载均衡集群部署 1.4 keepalived部署 1.5 测试监控的 ...
- three.js教程3-模型对象、材质material
1.Object3D的position和scale是三维向量Vector3 因此模型的位置和缩放等变化,也是使用Vector3的属性和方法实现,查询文档Vector3. 三维向量Vector3有xyz ...
- C 语言编程 — 指令行参数
目录 文章目录 目录 前文列表 命令行参数 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...
- java学习之旅(day.18)
网络编程 概述 计算机网络:自己百度吧 网络编程的目的:传播交流信息.数据交换.通信 想要达到这个效果需要什么: 如何准确的定位网络上的一台主机 端口 定位到这个计算机上的某个资源 找到了这个主机,如 ...
- 安装 MySQL ZIP 版本
安装 MySQL 的 ZIP 版本相对于安装包版本稍微复杂一些,因为它需要手动解压和配置.以下是在 Windows 上安装 MySQL ZIP 版本的步骤: 下载 MySQL ZIP 文件: 前往 M ...
- 原型工具--canva可画
Canva 是一个功能强大的在线设计平台,提供了丰富的设计工具和素材,包括原型设计.尽管 Canva 在原型设计方面并不像专门的原型设计工具(如Sketch.Figma.Adobe XD等)那样功能全 ...
- zabbix笔记_007 zabbix 分布式架构
1. zabbix 分布式架构[服务器数量较大的场景下使用] 现有架构: agent --> zabbix server proxy架构: agent --> zabbix proxy - ...
- iPhoneX 适配总结
一.iPhoneX适配第一步,根据iPhoneX的屏幕像素大小,引入对应的启动图,告诉系统,app兼容iPhoneX 需要在launchimage中引入一张 1125*2436的png,app将默认展 ...
- 内置对象Date
// 内置对象 Date 时间对象 // 可以通过 内置对象 data来获取和存储时间 // 使用方式步骤 // 1,创建时间对象 // ...