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

[SpringBoot] SpringBoot-04-读取yaml配置文件

[SpringBoot] SpringBoot-04-读取yaml配置文件

  • 1. 单个属性
  • 2. 全部属性
  • 3. 对象属性
  • 补充

1. 单个属性

yaml 内的属性如下:

server:
  port: 80

只需在成员变量上注解 @Value(“${属性名}”) 即可,用美元符号获取属性值

如下例:

@RestController
@RequestMapping("/")
public class DemoController {

    @Value("${server.port}")
    private String port;

    @GetMapping
    public String func() {
        return "server port: " + port;
    }
}

2. 全部属性

yaml 内的属性如下:

server:
  port: 80
logging:
  level: 
    root: warn

定义 Environment 成员变量,注解 @Autowired 即可,通过 .gerProperty(属性名) 函数来获取属性值

如下例:

@RestController
@RequestMapping("/")
public class DemoController {

    @Autowired
    private Environment environment;

    @GetMapping
    public String func() {
        String port = environment.getProperty("server.port");
        String level = environment.getProperty("logging.level.root");
        return "server port: " + port + "\n"
                + "logging level: " + level;
    }
}

3. 对象属性

yaml 内的属性如下:

mybook:
  name: 《SpringBoot入门》
  price: 28.00
  tags: [编程, Java, Spring]

首先要定义一个 bean,给类注解 @Component 表示添加到 Spring 容器,注解 @ConfigurationProperties 设置属性 prefix 为配置中的对象名,如下例:

@Component
@ConfigurationProperties(prefix = "mybook")
public class Book {
    private String name;
    private Double price;
    private String[] tags;

	// 省略了成员方法
}

使用自动装配填充即可,如下例:

@RestController
@RequestMapping("/")
public class DemoController {

    @Autowired
    private Book book;

    @GetMapping
    public String func() {
        return book.toString();
    }
}

[补充]

  • 当有多个类注解 prefix 的值为同一个对象时,IDEA会报错 Duplicated prefix,但不影响项目运行

补充

在刚才自定义 bean 时,IDEA 会报一个警告 Spring Boot Configuration Annotation Processor not configured,显示在页面的顶部,这个警告不会影响项目运行

在 pom.xml 中添加下面的依赖就可以解决:

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

相关文章:

  • js判断是对象还是数组的方法
  • 开学季河科大社区活动详情介绍实例
  • String字符串的常用方法
  • 软件测试适合女生吗?我是一名文员、不甘心着平凡的生活!!
  • 【操作系统】操作系统基础必知必会
  • 容错限流框架之Hystrix上
  • ES6模块
  • vim 多行注释
  • 基于MATLAB的迭代学习控制(Iterative Learning Control,ILC)算法的仿真与分析
  • 【LEACH协议】基于matlab最佳簇半径的无线传感器网络分簇路由算法【含Matlab源码 2087期】
  • PDA手持机轻松解决库存盘点难题支持一维二维码扫描
  • vscode启动不了,折腾了半天发现已经不支持win7
  • 【智能优化算法-麻雀搜索算法】基于萤火虫结合麻雀搜索算法求解单目标优化问题附matlab代码
  • 22-09-04 西安 谷粒商城(01)MySQL主从复制、MyCat读写分离、MyCat分库分表
  • 猿创征文|Python3,10分钟写了一个WIFI 万(破) 能 (解) 钥 (神) 匙 (器),YYDS。
  • [Vue CLI 3] 配置解析之 css.extract
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 0x05 Python数据分析,Anaconda八斩刀
  • CSS 专业技巧
  • docker容器内的网络抓包
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java Agent 学习笔记
  • Rancher-k8s加速安装文档
  • react-native 安卓真机环境搭建
  • springboot_database项目介绍
  • yii2中session跨域名的问题
  • 百度地图API标注+时间轴组件
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 解析带emoji和链接的聊天系统消息
  • 力扣(LeetCode)357
  • 免费小说阅读小程序
  • 入门到放弃node系列之Hello Word篇
  • 优化 Vue 项目编译文件大小
  • UI设计初学者应该如何入门?
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 正则表达式-基础知识Review
  • ​VRRP 虚拟路由冗余协议(华为)
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (七)理解angular中的module和injector,即依赖注入
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (转)视频码率,帧率和分辨率的联系与区别
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Core中的去虚
  • .NET delegate 委托 、 Event 事件
  • .NET 事件模型教程(二)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET运行机制