示例

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读取配置文件的几种方式的更多相关文章

  1. Spring Boot 入门系列(二十五)读取配置文件的几种方式详解!

    在项目开发中经常会用到配置文件,之前介绍过Spring Boot 资源文件属性配置的方法,但是很多朋友反馈说介绍的不够详细全面.所以, 今天完整的分享Spring Boot读取配置文件的几种方式! S ...

  2. .net core 读取配置文件的几种方式

    一.Json配置文件 1.这里的配置文件指的是下图 2.json配置文件示例 { "Logging": { "LogLevel": { "Defaul ...

  3. Springboot读取配置文件的两种方法

    第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest ...

  4. Spring Boot读取配置文件的几种方式

    Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口.这三种注解可以配合着@PropertySou ...

  5. spring-boot-route(二)读取配置文件的几种方式

    Spring Boot提供了两种格式的配置文件,分别是properties 和 yml.Spring Boot最大的特点就是自动化配置,如果我们想修改自动化配置的默认值,就可以通过配置文件来指定自己服 ...

  6. java 学习笔记 读取配置文件的三种方式

    package com.itheima.servlet.cfg; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...

  7. 关于spring读取配置文件的两种方式

    很多时候我们把需要随时调整的参数需要放在配置文件中单独进行读取,这就是软编码,相对于硬编码,软编码可以避免频繁修改类文件,频繁编译,必要时只需要用文本编辑器打开配置文件更改参数就行.但没有使用框架之前 ...

  8. Servlet读取配置文件的三种方式

    一.利用ServletContext.getRealPath()[或getResourceAsStream()] 特点:读取应用中的任何文件.只能在web环境下. private void text3 ...

  9. SpringBoot中读取配置文件的几种方式

    1.读取application文件 在application.yml或者properties文件中添加: info: name: xiaoming age: 13 sex: 1 读取方式如下: imp ...

  10. Spring 读取配置文件的俩种方式

    读取配置可通过 org.springframework.core.env.Environment 类来获取, 也可以通过@Value的方式来获取 注解形式: @PropertySource({&quo ...

随机推荐

  1. DNS(7) -- 智能DNS实现

    目录 1. 智能DNS 1.1 智能DNS概述 1.2 ACL控制列表 1.3 智能DNS实现 1.3.1 bind-view功能 1.3.2 智能DNS场景实现 1.3.3 生产场景配置示例 1. ...

  2. [4]自定义Lua解析器管理器-------演化脚本V0.7

    [4]自定义Lua解析器管理器-------演化脚本V0.7 使用自定义委托来调用lua脚本中的多返回值函数和长参数类型的函数. 先看代码,依旧是上篇文章中所贴的脚本.新增调用两个函数testFunc ...

  3. Idefics2 简介: 为社区而生的强大 8B 视觉语言模型

    我们很高兴在此发布 Idefics2,这是一个通用的多模态模型,接受任意文本序列和图像序列作为输入,并据此生成文本.它可用于回答图像相关的问题.描述视觉内容.基于多幅图像创作故事.从文档中提取信息以及 ...

  4. Asp-Net-Core开发笔记:使用ActionFilterAttribute实现非侵入式的参数校验

    前言 在现代应用开发中,确保API的安全性和可靠性至关重要. 面向切面编程(AOP)通过将横切关注点(如验证.日志记录.异常处理)与核心业务逻辑分离,极大地提升了代码的模块化和可维护性. 在ASP.N ...

  5. mongodb的replication与shard分片结合使用详解

    部署脚本 #!/bin/bash #复制集配置 IP='10.0.0.12' #主机ip NA='rs3' #复制集名称 if [ "$1" = "reset" ...

  6. smtplib详解,发送邮件

    创建邮箱账号 1.官网登录邮箱. 2.在邮箱的主界面找到"设置",新版的主界面与旧版稍有不同,一般位于上方,齿轮状的即是. 3.点击齿轮状的设置标志,会弹出一个下拉菜单,在最后有我 ...

  7. Machine Learning - 笔记1

    一.监督学习(supervised learning) 1.回归(regression)         ①按我的理解来说,就是对于训练模型所用到的数据集,能够知道Input和Output的特征.比如 ...

  8. C#的奇技淫巧:利用WinRM来远程操控其他服务器上的进程

      前言:有时候远程服务器的进程你想偷偷去围观一下有哪些,或者对一些比较调皮的进程进行封杀,或者对一些自己研发的服务进行远程手动启动或者重启等,又不想打开远程桌面,只想悄咪咪地执行,那也许下面的文章会 ...

  9. TS码流解析(二)PSI PAT PMT

    TS码流有PSI和PES两种负载,这一节主要来了解PSI是如何解析的. 1.PSI PSI(Program Specific Information)节目专用信息,用来描述TS码流的节目组成等信息.P ...

  10. ubuntu18.04最小化安装

    ubuntu 18.04虚拟机安装 镜像下载地址: https://releases.ubuntu.com/18.04/ubuntu-18.04.6-live-server-amd64.iso 创建虚 ...