JAVA中YML:几个用法

在这里插入图片描述

项目有一些配置文件,ini、prop类型的配置文件都考虑过后,还是选择yml文件,如上图:xxconfig.yml。
要求:
1、允许实施人员手动配置
2、配置文件要能轻便的转化为一个JAVA对象
3、程序启动后,打印这些配置项,方便肉眼检查。

一、容器加载配置文件

@Configuration
public class YmlConfigurer {/*** 加载YML格式自定义配置文件*/@Beanpublic static PropertySourcesPlaceholderConfigurer properties() {PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();yaml.setResources(new ClassPathResource("deviceConfig.yml"),new ClassPathResource("flowConfig.yml"));//File引入configurer.setProperties(yaml.getObject());return configurer;}}

二、配置文件映射为JAVA对象

设备配置
@PropertySource(value = {"classpath:deviceConfig.yml"})
@ConfigurationProperties(prefix = "config")
@Component
@Data
public class DeviceConfig {String defaultPlc;List<SerialDataParams> serialDataParams;List<CameraParam> cameraParams;List<Rj45Params> rj45Params;List<DeviceName> virParams;}

yml配置文件内容
在这里插入图片描述

流程配置
@PropertySource(value = {"classpath:flowConfig.yml"})
@ConfigurationProperties(prefix = "flow")
@Component
@Data
public class FlowConfig {Boolean enable;Boolean plcEnable;List<DiscreteInputEnum> senseDis;List<DiscreteInputEnum> rasterDis;Boolean outPutEnable;/*** api信号*/Boolean waitSignalEnable;List<String> aVideoCameras;List<String> bVideoCameras;List<String> photoCameras;Long initTime;String initShow;Integer emptyPoundTrigger;Integer weighTrigger;/*** 超时时间 毫秒*/Integer timeOutMin;/*** 提示消息*/HintMsg hintMsg;}

yml流程配置文件内容
在这里插入图片描述
枚举是依靠名字进行匹配的,如下图
在这里插入图片描述

三、打印及使用

@Slf4j
@Component
public class DemoConfig {@ResourceDeviceConfig deviceConfig;@ResourceFlowConfig flowConfig;@PostConstructpublic void init(){log.info("------------设备配置文件----------------");log.info("DeviceConfig");log.info("{}",deviceConfig);log.info("------------流程配置文件----------------");log.info("FlowConfig");log.info("{}",flowConfig);// todo 检查Boolean enable = flowConfig.getEnable();}}

四、说明

  • 配置文件对应的JAVA对象,一般使用String、Integer、Long、Boolean、枚举、封装对象,字段不匹配会丢失,缺少的字段会报错。
  • 让实施/测试/开发看启动日志,确定是否配正确。

五、项目背景说明(项目经验,可不看)

  • 技术背景:java1.8、sqlite、jpa、springboot
  • 指标参数:容灾、并发、高可用等这些指标不考虑,因为一个项目的利润大概0.3~2W(研发人员就我和一头老铁)。
  • 现实限制:这么复杂的配置文件,应该放到 “ 数据库-字典表 ” 更好。奈何实施人员不会操作(刚会用电脑的应届生…)。主要是老板为了省钱,4000+请的(知道真相的我…吐个槽)。
  • 使用配置文件的更多的理由
    1、安装数据库实施不怎么会操作,只能JAVA操作文件系统自动生成sqlite数据库文件。
    2、为了更简单,我都是把java环境、启动脚本、浏览器一起打包。而实施需要做的“ 双击 + 编辑文本文件 ”
    3、上任开发老铁这么干的…

最后,项目已经不存在了。现实意义上的那种,所以不用担心泄密、公开。
如果有条件,建议不要使用复杂的配置文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/513840.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

teknoparrot命令行启动游戏

官方github cd 到teknoparrot解压目录 cd /d E:\mn\TeknoParrot2_cp1\GameProfiles启动游戏 TeknoParrotUi.exe --profile游戏配置文件游戏配置文件位置/UserProfiles,如果UserProfiles文件夹里没有那就在/GameProfiles,在配置文件里将游戏路径加入之间,或者打开模拟器设置 …

空间直角坐标系、大地坐标系、平面坐标系介绍

空间直角坐标系、大地坐标系、平面坐标系 2017-04-11 13:53 ( 一)空间直角坐标系 空间直角坐标系的坐标原点位于参考椭球的中心,Z轴指向参考椭球的北极,X轴指向起始子午面与赤道的交点,Y轴位于赤道面上切按右手系于X轴呈90度夹角,某点中的坐标可用该点在此坐标系的各…

redis02 安装

官网下载 传送门https://redis.io/download/#redis-downloads 安装Redis mac m1安装 下载你需要版本的软件包放到指定的目录下进行解压 cd 到解压好的redis目录 运行下面的命令进行编译测试 sudo make test 中途可能会提示你安装make工具&#xff0c;按提示安装即可&…

NTFS Disk by Omi NTFS for mac v1.1.4中文版

NTFS Disk by Omi NTFS for Mac&#xff1a;NTFS文件系统的无缝桥梁 软件下载&#xff1a;NTFS Disk by Omi NTFS for mac v1.1.4中文版 &#x1f310; 跨平台访问&#xff0c;文件无阻 NTFS Disk by Omi NTFS for Mac 为您的Mac提供了对NTFS文件系统的无缝访问。无论您是在Win…

JavaWeb - 2 - HTML、CSS

什么是HTML、CSS&#xff1f; HTML&#xff08;HyperText Markup Language&#xff09;&#xff1a;超文本标记语言 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大&#xff0c;除了文字信息&#xff0c;还可以定义图片、音频、视频等内容 标记语言&…

【DIY】钱包的“电子卫士”的制作

一、工作原理 钱包的“电子卫士”电路如图1所示&#xff0c;其核心元件是微型蜂鸣器专用音响集成电路A&#xff0c;它与压电陶瓷蜂鸣片B、电池G等组成了一个体积小巧、发声响亮的简易蜂鸣器。 平时&#xff0c;钱包通过尼龙线与插头XP相接&#xff0c;而XP插入插孔XS内&#x…

【深度学习】知识点归纳总结-for 面试【自用】

add 和 concat的区别 特征add的时候就是增加特征的信息量&#xff0c;特征concat的时候就是增加特征的数量&#xff0c;注重细节的时候使用add&#xff0c;注重特征数量的时候使用concat&#xff0c; resnet用的add densenet用的concat RNN应用 一、关键字提取&#xff08;…

如何计算搭建光伏电站需要多少成本?

光伏电站&#xff0c;又称太阳能电站&#xff0c;是一种利用太阳能发电的电力系统。随着全球对可再生能源的需求日益增加&#xff0c;光伏电站的建设变得越来越普遍。然而&#xff0c;在投资光伏电站之前&#xff0c;了解其建设成本是非常重要的。本文将介绍如何计算搭建光伏电…

CSS字体样式的使用,下载量瞬秒百万

CSS简介 CSS是层叠样式表&#xff08;Cascading Style Sheets&#xff09;的简称。 作用&#xff1a; 用于HTML文档中元素的样式定义实现内容&#xff08;html元素&#xff09;与表现&#xff08;css样式&#xff09;的分离实现代码的可重用性和可维护性 CSS主要部分&#…

【bug日记】已解决:Invalid bound statement (not found): 找不到对应的Mapper映射类

急着解决问题的哥们直接用目录跳到下文哈 我放传送门了 目录 试错 尝试过确认的东西&#xff1a; 最终解决方案&#xff01;已经完美解决&#xff1a; 只需要在你配置数据源的地方&#xff1a; 更改为&#xff1a; MybatisSqlSessionFactoryBean sessionFactory …

YOLOv9推理详解及部署实现

目录 前言零、YOLOv9简介一、YOLOv9推理(Python)1. YOLOv9预测2. YOLOv9预处理3. YOLOv9后处理4. YOLOv9推理 二、YOLOv9推理(C)1. ONNX导出2. YOLOv9预处理3. YOLOv9后处理4. YOLOv9推理 三、YOLOv9部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX…

为什么被蜜蜂蛰了会肿得像馒头

有的人却只是一点点小鼓包。 病情分析&#xff1a;蜜蜂体内存在一种有毒物质&#xff0c;其主要成分是蚁酸&#xff0c;这种成分进入人体后&#xff0c;会和血液发生反应&#xff0c;导致皮肤表现出红肿和瘙痒的症状。一些人群还会对蜜蜂表现出过敏反应&#xff0c;此类人群在…