一个Spring Boot文档,两种方式。

在优锐课的java沙龙分享中,在现代软件开发中,应用程序由配置驱动。 如果可配置属性的数量很大,则很难记住每个属性的用途,结构或类型。 因此,有必要对这些属性的文档进行投资。

本文探讨了IDE集成选项,以帮助编写基于Spring Boot YAML的配置。

弹簧配置处理器¹

Spring Boot为配置文档提供了一种即用的机制:包括一个名为spring-boot-configuration-processor的jar和触发器构建。

annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'

怎么运行的

1. 你触发构建

2. 扫描@ConfigurationProperties并构造一个描述整体属性的JSON文件。

{"groups": [{"name": "db","type": "mighty.config.Database","sourceType": "mighty.config.Database"}],"properties": [{"name": "db.hostname","type": "java.lang.String","sourceType": "mighty.config.Database"},{"name": "db.password","type": "java.lang.Character[]","sourceType": "mighty.config.Database"},{"name": "db.port","type": "java.lang.Integer","sourceType": "mighty.config.Database","defaultValue": 0},{"name": "db.username","type": "java.lang.String","sourceType": "mighty.config.Database"}],"hints": []
}

3.你的IDE会拦截生成的文件,并帮助你编写配置。

IntelliJ IDEA –最终版在类路径上检测Spring元处理器,并根据生成的元数据文件提供提示。

但是,不支持IntelliJ IDEA社区版本,Spring Tools 4(带有Spring工具的Eclipse)和Visual Code(带有Spring工具的)。

YAML模式

YAML模式是一个更新,仍在发展且功能强大的选项。 实际上,“ YAML模式是以JSON格式编写的”²(奇怪!)。

在撰写本文时,#8或2019-09草案已经发布,其中包括诸如Visual Studio Code(Red Hat具有YAML扩展名),IntelliJ IDEA 2019.x等工具支持Draft#7。

怎么运行的

1. 你可以手动编写模式。

2. 你创建模式映射:针对模式管理的文件映射。 IntelliJ IDEA社区版

3. IDE根据提供的架构提供提示,以帮助你有效地编写架构。

Spring 配置元数据与YAML模式

现在我们已经看到了两种方式,现在让我们进行比较。

情况1:静态属性

考虑一种配置,该配置接受一些与数据库连接有关的固定属性。

db:hostname:port:username:password:

这是两种方法的IDE性能:

在YAML模式的情况下,建议中未显示属性的类型,但在验证属性时会建议类型。 使用Spring Boot配置元数据,Java异常消息显示在“类型不匹配”上。

情况2:动态属性

让我们扩展先前的案例配置。 考虑下面显示的配置扩展。

根据类型,可以更改其他属性。 考虑支持的两种数据库类型:Oracle和MySQL。

如果类型为oracle,则为Oracle特定的属性;如果类型为mysql,则为MySQL的特定属性。

UML类图可能的解决方案:

在Spring配置元数据的情况下,IDE无法将Oracle属性与MySQL属性区分开。 生成的Spring元数据JSON文件未描述或命令属性的条件性质。 而且,Spring Configuration元数据规范未指定任何条件构造。

在YAML架构的情况下,IDE可以拦截条件属性。

使用YAML架构使用

总结

当涉及到静态可配置属性时,Spring Configuration元数据程序员与YAML Schema相当。 而且,它是自动生成的; 但是,这由IntelliJ IDEA的付费版本提供支持。

YAML提供了出色的条件模式支持,使其功能强大; 但是,编写这样一个复杂的架构并非易事

那么,哪个更好?

Spring开发人员应该包括条件属性构造,或者他们可以采用YAML / JSON模式,这将成为未来的标准,并且将被广大读者理解(即使使用不同的语言背景!)。 而且,它将简化IDE的实现。

> 喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
> 如果你对java技术很感兴趣也可以交流学习,共同学习进步。
> 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货

oracle帮助文档_Spring Boot Config文档,使用IntelliJ IDEA的两种方法相关推荐

  1. 职称计算机ppt教程,职称计算机:Word文档转为PPT的两种方法

    许多人都习惯在PowerPoint环境中制作幻灯片.如果你手头有一个现成的word文稿讲义,就能变成PowerPoint演示文稿,而不用打开PowerPoint重新输入文字.因为word和PowerP ...

  2. Java调用打印机打印PDF文档的两种方法

    最近,由于项目需求,需要增加系统调用打印机打印PDF文档功能.以前在Asp.Net项目中做过套打,但是现在的需求直接文档打印,下面是实现代码调用打印机的两种方法. 1.Java Print Servi ...

  3. NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档

    NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档 目录 问题探究 实现代码 问题探究 实现代码 f=open("niu.txt&q ...

  4. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

  5. 生成Doc文档的两种方法

    生成Doc文档的两种方法 一.通过在cmd的执行 javadoc命令 通过以下图片打开Java文件所在路径 在打开的目录文件的路径前面加上cmd 进入DOS命令 在命令行中执行javadoc -enc ...

  6. 手机word文档怎么转换成pdf?分享两种方法

    手机word文档怎么转换成pdf?在如今信息化的时代,电子文档已经成为人们日常办公不可或缺的一部分.随着科技的不断进步,电子文档的格式也在不断发展.PDF作为电子文档的一种重要格式,被广泛使用.那么, ...

  7. 判断是否是回文字符串两种方法

    判断回文字符串的两种方法 public class JudgingPalindrome {public static void main(String[] args) {solution01();Sy ...

  8. 查看oracle错误信息,经验:查看oracle错误信息的两种方法

    oracle又报错了,但是他的错误码让我一头雾水.我怎么知道他的错误码是什么含义呢??该死的oracle为什么有这么多错误码呀?? 不要生气,oracle虽然有很多错误码.但是他已经给你方法去查看这些 ...

  9. 如何让oracle用户不过期,Oracle用户密码设为不过期的两种方法

    1.在sql Plus下,以DBA身份登陆 用户名/密码@服务器SID as sysdba 方法一:(注意必须用双引号把后面的引上) C:/Documents and Settings/ssy> ...

最新文章

  1. linux系统学习之vi编辑
  2. php个推设置指定用户收到推送消息,请问怎么给指定用户推送信息
  3. SHELL编程一二三
  4. 佰腾科技:专利大数据的云上裂变之路
  5. 想学习java,如果学不会java怎么办?
  6. 信息学奥赛一本通(1196:踩方格)
  7. 深入Golang之sync.Pool详解
  8. 将asp.net1.1的应用程序升级到asp.net2.0的一点心得
  9. Function:函数对象
  10. 解决了一个堆破坏问题
  11. springboot图片上传和显示_Jeewx-Boot 1.1 版本发布,基于SpringBoot的开源微信管家系统...
  12. 计算机应用技术实习周记十篇,计算机应用实习周记模板.doc
  13. 中国AR镜片市场现状研究分析与发展前景预测报告(2022)
  14. 3ds max软件如何彻底卸载干净
  15. 线性分类器三种最优准则
  16. 西门子G120变频器初始化参数设置
  17. 用Python模拟QQ界面之QQ登录界面的奥秘
  18. bootloader介绍
  19. python自动抢单_【Python成长之路】基于sikuli jar包,实现淘宝自动抢单功能(1)...
  20. h5引入json_H5页面内使用JSON动画

热门文章

  1. C Linux 多线程入门
  2. asyncdata 获取参数_nuxt的asyncData发送post请求如何传递FormData形式的参数
  3. 山大计算机学院副院长屠长河,留学交流系列——山东大学计算机学院访问澳门大学...
  4. 51单片机定时器初值的计算
  5. 腾讯地图api-地图展示map和覆盖物(标记)
  6. JavaScript中的点击事件
  7. java 华氏度_在Java中将华氏度转换为摄氏温度[重复] - java
  8. 安卓mysql修改_手动修改Android数据库数据
  9. python调用os.system启动anaconda环境_在Mac中PyCharm配置python Anaconda环境过程图解
  10. Nginx---- Nginx命令配置到系统环境