微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringBoot启动源码探究----configureHeadlessProperty()方法

方法只做了一件事:设置了一个名为java.awt.headless的系统属性,源码如下:

private void configureHeadlessproperty() {
   System.setProperty(SYstem_PROPERTY_JAVA_AWT_HEADLESS,System.getProperty(
         SYstem_PROPERTY_JAVA_AWT_HEADLESS,Boolean.toString(this.headless)));
}
其中:
SYstem_PROPERTY_JAVA_AWT_HEADLESS="java.awt.headless";
又调用了System类的两个方法:setProperty(String key,String value)和getProperty(String a,String b)

上述含义是:

属性设值System.setproperty(),它的值来源于System.getproperty(),奇怪了,为什么把属性一个地方取出来,然后又设置到同一个地方,这不是多此一举吗?

其实这是因为System中的两个读写属性方法不对等.

System中getproperty()有2个重载方法,但却只有一个setproperty()方法,其中getproperty()有单参和双参两方法,单参就是简单的获取属性,有就有,没有就没有,双参则聪明一点,在没有的时候会返回一个调用者指定的认值,所以经过这样操作后,不管有没有那个属性,最终都能保证有.

所以先取后设.

那么:做了这样的操作后,SpringBoot想干什么呢?

其实是想设置该应用程序,即使没有检测到显示器,也允许其启动.

对于服务器来说,是不需要显示器的,所以要这样设置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐