美文网首页Java技术分享
Java中通过System.setProperty()设置系统属

Java中通过System.setProperty()设置系统属

作者: 墨迹嘿嘿 | 来源:发表于2020-03-20 14:03 被阅读0次
    • 设置指定键对值的系统属性
    • setProperty (String prop, String value);
    • 参数:
    • prop - 系统属性的名称。
    • value - 系统属性的值。
    • 返回:
    • 系统属性以前的值,如果没有以前的值,则返回 null。
    • 抛出:
    • SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许设置指定属性。
    • NullPointerException - 如果 key 或 value 为 null。
    • IllegalArgumentException - 如果 key 为空。
    • 注:这里的system,系统指的是 JRE (runtime)system,不是指 OS。
    //实例
    System.setProperty("Property1", "abc");
    System.setProperty("Property2","def");
    

    //这样就把第一个参数设置成为系统的全局变量!可以在项目的任何一个地方 通过System.getProperty("变量");来获得,

    //System.setProperty 相当于一个静态变量 ,存在内存里面!

    public class SystemTest {
        
        static {
            setValue();
        }
     
        public static void setValue() {
            System.setProperty("name", "张三");
            System.setProperty("age", "28");
        }
        
        public static void main(String[] args) {
            System.out.println(System.getProperty("name"));
            System.out.println(System.getProperty("age"));
        }
    }
    

    输出:


    image.png

    下面是在Tomcat源码中Bootstrap的代码块

       static {
           // Will always be non-null  将始终为非空
           String userDir = System.getProperty("user.dir");
           System.out.println("userDir 当前系统的用户目录====================>>>>>>>  " + userDir);
    
           // Home first 获取已经存在系统中的地址信息 catalina.home
           String home = System.getProperty(Globals.CATALINA_HOME_PROP);
    
           System.out.println("home first ======启动输出为null=======>>>>>>>>>  " + home);
           File homeFile = null;
    
           if (home != null) {
               File f = new File(home);
               try {
                   homeFile = f.getCanonicalFile();
               } catch (IOException ioe) {
                   homeFile = f.getAbsoluteFile();
               }
           }
    
           if (homeFile == null) {
               // First fall-back. See if current directory is a bin directory
               // in a normal Tomcat install
               File bootstrapJar = new File(userDir, "bootstrap.jar");
    
               if (bootstrapJar.exists()) {
                   File f = new File(userDir, "..");
                   try {
                       homeFile = f.getCanonicalFile();
                   } catch (IOException ioe) {
                       homeFile = f.getAbsoluteFile();
                   }
               }
           }
           if (homeFile == null) {
               // Second fall-back. Use current directory
               File f = new File(userDir);
               try {
                   homeFile = f.getCanonicalFile();
               } catch (IOException ioe) {
                   homeFile = f.getAbsoluteFile();
               }
           }
    
           catalinaHomeFile = homeFile;
           // 设置catalina.home键值中的系统属性,这里设置的是Tomcat在系统中的地址信息
           System.setProperty(
                   Globals.CATALINA_HOME_PROP, catalinaHomeFile.getPath());
    
           // Then base
           String base = System.getProperty(Globals.CATALINA_BASE_PROP);
           if (base == null) {
               catalinaBaseFile = catalinaHomeFile;
           } else {
               File baseFile = new File(base);
               try {
                   baseFile = baseFile.getCanonicalFile();
               } catch (IOException ioe) {
                   baseFile = baseFile.getAbsoluteFile();
               }
               catalinaBaseFile = baseFile;
           }
           System.setProperty(
                   Globals.CATALINA_BASE_PROP, catalinaBaseFile.getPath());
       }
    

    相关文章

      网友评论

        本文标题:Java中通过System.setProperty()设置系统属

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