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!


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

查看所有标签

猜你喜欢:

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

参与感

参与感

黎万强 / 中信出版社 / 2014-8 / 56.00元

◆雷军亲笔作序,小米联合创始人黎万强著。 ◆揭开小米4年600亿奇迹背后的理念、方法和案例。 ◆了解小米,必读本书! ◆迄今为止关于小米最权威、最透彻、最全面的著作! ◆新一代营销圣经。 ◆2014年最重磅图书! ◆再掀企业界全民学习小米热潮! ◆引爆出版界、财经界、IT界、科技界大震荡的“现象级热书”! ◆全书四色印刷,包含46张海报级插图。 ......一起来看看 《参与感》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具