美文网首页Java技术升华面试精选
JAVA进阶篇(11)— 如何读取JVM启动参数的值

JAVA进阶篇(11)— 如何读取JVM启动参数的值

作者: 小胖学编程 | 来源:发表于2021-09-17 11:10 被阅读0次

    项目配置信息一般放在配置文件中,但是一些配置需要放在JVM的启动项中。在启动的时候读取最新的配置。

    1. 工具类

    为此:特意写了一个工具类,来完成该功能:

    /**
     * 系统工具类
     *
     * @Date 2021-01-21 17:54
     */
    @Slf4j
    public abstract class SystemUtil {
    
        /**
         * 读取JVM启动的配置项例如-DallowSize=1)
         *
         * @param key 启动项的key,例如allowSize
         * @return 配置项的值String格式, 由调用者进行转换
         */
        public static String getSystemProperties(String key) {
            return System.getProperties().getProperty(key);
        }
    
        /**
         * 读取JVM启动参数(例如-DallowSize=1),并转换为Integer格式。若未配置或者转换失败,返回null
         *
         * @param key 启动项的key,例如allowSize
         * @return 若未配置或者转换失败,返回null
         */
        public static Integer getSystemProperties2Int(String key) {
            Integer value = null;
            try {
                String property = System.getProperties().getProperty(key);
                if (property != null) {
                    value = Integer.valueOf(property);
                }
            } catch (Exception e) {
                log.error("", e);
            }
            return value;
        }
    
        /**
         * 读取JVM启动参数(例如-DallowSize=1),并转换为Long格式。若未配置或者转换失败,返回null
         *
         * @param key 启动项的key,例如allowSize
         * @return 若未配置或者转换失败,返回null
         */
        public static Long getSystemProperties2Long(String key) {
            Long value = null;
            try {
                String property = System.getProperties().getProperty(key);
                if (property != null) {
                    value = Long.valueOf(property);
                }
            } catch (Exception e) {
                log.error("", e);
            }
            return value;
        }
    }
    
    启动项配置.png

    使用的时候,将project.name传入,即可读取出product001_pro的名字。

    2. JAVA的封装

    JAVA使用基本类型的封装类型,也可以去获取JVM启动的系统参数:

    public class TestBoolean {
    
    
        private final static String SYS_FAST = "SYS_FAST_FLAG";
        private final static String INT_PARAM = "INT_PARAM";
    
        /**
         * 泛型类型封装了参数类型.
         * 区分大小写。
         */
        public static void main(String[] args) {
            //idea环境变量配置时,必须以-D开头
            System.out.println(Boolean.getBoolean(SYS_FAST));
            System.out.println(Integer.getInteger(INT_PARAM));
        }
    
    }
    

    在一些框架中,就可以根据JVM启动参数的不同,来动态的创建不同的对象。

    相关文章

      网友评论

        本文标题:JAVA进阶篇(11)— 如何读取JVM启动参数的值

        本文链接:https://www.haomeiwen.com/subject/pwilgltx.html