SpringBoot探索04 – Java Headless Mode

栏目: IT技术 · 发布时间: 4年前

内容简介:在springboot的启动代码中看到了下面这一句:先不谈这段代码的作用,只说这里的写法就有很多可以借鉴的地方:从spring的代码中就可以看到设计者对我们这些普通Developer的友好。

引入

在springboot的启动代码中看到了下面这一句:

 private void configureHeadlessProperty() {
 System.setProperty(SYSTEM_PROPERTY_JAVA_AWT_HEADLESS,
 System.getProperty(SYSTEM_PROPERTY_JAVA_AWT_HEADLESS, Boolean.toString(this.headless)));
 }

先不谈这段代码的作用,只说这里的写法就有很多可以借鉴的地方:

  1. 定义了有意义的常量
  2. 在set之前先get以避免覆盖用户自定义配置
  3. 允许用户在程序中配置headless项,所以有了 this . headless 变量
  4. Boolean . toString 这样的写法也是极好的,起到了规范统一的作用

从spring的代码中就可以看到设计者对我们这些普通Developer的友好。

忽略掉这些有价值(但有可能显得啰嗦)的内容,可以提炼出这行代码:

System.setProperty("java.awt.headless", "true");

这行代码的作用是:声明当前应用使用 headless 模式。

说明

Headless模式是应用的一种配置模式。在服务器可能缺少显示设备、键盘、鼠标等外设的情况下可以使用这种模式。

java.awt.toolkitjava.awt.graphicsenvironment 类中的很多方法,除了对字体、图形和打印的操作外还需要调用显示器、键盘和鼠标等设备。但是有一些类,比如 Canvas Panel ,是可以在headless模式下执行的。

在headless模式下,(awt)应用程序可以执行如下操作:

  1. 创建轻量级组件
  2. 收集关于可用的字体、字体指标和字体设置的信息
  3. 设置颜色来渲染准备图片
  4. 创造和获取图像,为渲染准备图片
  5. 使用java.awt.PrintJob,java.awt.print.*,和javax.print.*类里的打印操作

简单来说,headless模式是一种声明:现在不要指望硬件的支持了,只能使用系统的运算能力来做些非可视化的处理工作。

除此之外,应该是没有其他作用了。

重点

关于这个配置在性能上的影响:

  1. 如果应用不需要任何 head ,那么有无这个配置没有任何影响;
  2. 如果应用有弹出窗口之类的操作,那么在 headless 模式下这种操作会被阻止。

总之,这是一项提示类的配置。

参考

End!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

简约至上

简约至上

[英] Giles Colborne / 李松峰、秦绪文 / 人民邮电出版社 / 2011-1-1 / 35.00

追求简单易用是人类的本性,无论是互联网产品。还是移动应用。亦或其他交互式设计,简单易用始终都是赢得用户的关键。同时,简单易用的程度也与产品寿命的长短密切相关。在《简约至上:交互式设计四策略》中,作者Giles托20多年交互式设计的探索与实践。提出了合理删除、分层组织、适时隐藏和巧妙转移这四个达成简约至上的终极策略,讲述了为什么应该站在主流用户一边,以及如何从他们的真实需求和期望出发,简化设计,提升......一起来看看 《简约至上》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具