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 ...
随机推荐
- 飞桨PaddleLite架构研读
一.架构全景图 二.源码详细解读 1. Lite体系下似乎有多种 op_desc/program_desc 的定义,之间的关系是什么?这样设计的背景和好处是什么? model_parser目录下,包含 ...
- 简易版跳板机-teleport使用
目录 1 环境搭建 2 teleport工具搭建 3 teleport使用示例 3.1 资产管理-添加主机 3.2 资产管理-添加账号 3.3 创建用户 3.4 运维授权 3.5 安装客户端助手 3. ...
- kettle使用3-增量同步(插入的时候判断数据是否存在,存在就更新,不存在就插入)
1.新建转换 2.在DB连接中,新建2个数据库连接 3.在输入中,新建:表输入 4.在输入中,新建:表输入 5.在输出中,新建:插入/更新 说明:更新字段: 是说更新目的表时候,哪些列更新,哪些不更新 ...
- 传统css布局方案(position,float,line-height等配合)
一.display display 是 css 布局中很重要的一个属性,它定义了元素生成的显示框类型,常见的几个属性值有:block.inline.inline-block.inherit.none. ...
- NumPy 数组复制与视图详解
NumPy 数组的复制与视图 NumPy 数组的复制和视图是两种不同的方式来创建新数组,它们之间存在着重要的区别. 复制 复制 会创建一个包含原始数组相同元素的新数组,但这两个数组拥有独立的内存空间. ...
- Mysql 存储引擎的区别以及索引查询失效的情况
存储引擎:就是指表在计算机上的存储方式.可以通过 SHOW ENGINES; 命令查询支持的存储引擎. alter table test engine= innodb/memory/myisam/ar ...
- vue我自己的动态菜单思路
1.在router里把所有的路由都加上. 2.后端存储路由path和其他设计需要的信息. 3.登录后,后端返回菜单树,根据权限不同,返回的菜单不同,并且还要返回每个path代表的页面具有的权限数组.可 ...
- 对比使用IConfigurationSectionHandler和ConfigurationSection自定义节点和自定义处理程序
使用自定义处理程序处理节点的好处我认为是,可以在业务代码中,不必再写一些读取配置文件的非业务代码了,只管取值.如果多处使用该配置节点,其优势更能体现出来.然后突然要增删配置,也只管改节点处理程序的代码 ...
- go 使用 consul api filter 过滤注意点
当你的value里面有-特殊符号的时候你应该像这样使用Service == "foo-bar"
- Android桌面Launcher源码浅析
在Android启动过程-万字长文(Android14)中介绍了Android系统的启动过程,本篇文章将继续介绍桌面应用Launcher. 一.Launcher介绍 在Android启动过程-万字长文 ...