SpringBoot探索04 – Java Headless Mode

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

内容简介:在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!


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

查看所有标签

猜你喜欢:

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

Algorithms to Live By

Algorithms to Live By

Brian Christian、Tom Griffiths / Henry Holt and Co. / 2016-4-19 / USD 30.00

A fascinating exploration of how insights from computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mind ......一起来看看 《Algorithms to Live By》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器