内容简介:在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))); }
先不谈这段代码的作用,只说这里的写法就有很多可以借鉴的地方:
- 定义了有意义的常量
- 在set之前先get以避免覆盖用户自定义配置
- 允许用户在程序中配置headless项,所以有了 this . headless 变量
- Boolean . toString 这样的写法也是极好的,起到了规范统一的作用
从spring的代码中就可以看到设计者对我们这些普通Developer的友好。
忽略掉这些有价值(但有可能显得啰嗦)的内容,可以提炼出这行代码:
System.setProperty("java.awt.headless", "true");
这行代码的作用是:声明当前应用使用 headless 模式。
说明
Headless模式是应用的一种配置模式。在服务器可能缺少显示设备、键盘、鼠标等外设的情况下可以使用这种模式。
在 java.awt.toolkit 和 java.awt.graphicsenvironment 类中的很多方法,除了对字体、图形和打印的操作外还需要调用显示器、键盘和鼠标等设备。但是有一些类,比如 Canvas 和 Panel ,是可以在headless模式下执行的。
在headless模式下,(awt)应用程序可以执行如下操作:
- 创建轻量级组件
- 收集关于可用的字体、字体指标和字体设置的信息
- 设置颜色来渲染准备图片
- 创造和获取图像,为渲染准备图片
- 使用java.awt.PrintJob,java.awt.print.*,和javax.print.*类里的打印操作
简单来说,headless模式是一种声明:现在不要指望硬件的支持了,只能使用系统的运算能力来做些非可视化的处理工作。
除此之外,应该是没有其他作用了。
重点
关于这个配置在性能上的影响:
- 如果应用不需要任何 head ,那么有无这个配置没有任何影响;
- 如果应用有弹出窗口之类的操作,那么在 headless 模式下这种操作会被阻止。
总之,这是一项提示类的配置。
参考
End!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
MD5 加密
MD5 加密工具
RGB CMYK 转换工具
RGB CMYK 互转工具