大家好,我是G探险者!
今天来聊一聊java常用类System。
事情的起因是项目里面使用了Jasypt 框架对配置项进行加密,主要是密码相关的配置,项目里面的application.yml有关密码的配置项,使用了占位符${PASSWORD}进行了占位,然后在idea里面的设置了JVM的启动参数VM OPTIONS
我在jvm的启动参数中,设置了密码这个变量值。
在代码里面是也是通过System.getProperty(“PASSWORD”)这种方式来取值的。这样在我本地是没有问题的,但是我们的项目最终打成镜像部署在华为云上,华为云里面设置环境变量和在本地idea里面设置JVM启动参数不是一回事,而是对应着idea里面的环境变量
而获取系统环境变量的值是通过System.getEnv(“PASSWORD”)这样的方式来获取的。这篇文章主要计时为了强调
System.getProperty(String key)和System.getenv(String name)的区别,顺带介绍一下System的其他常用方法。
System 类是 Java 中的一个核心类,属于 java.lang 包。它提供了与操作系统、运行时环境和系统资源的交互功能,常用于系统级操作。System 类是一个 final 类,意味着不能被继承。
下面是一些 System 类的常用功能:
1. 标准输入/输出流
例如:
System.out.println("Hello, World!"); // 输出到控制台
2. 数组拷贝
System.arraycopy() 方法用于高效地将一个数组的内容拷贝到另一个数组中。
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
System.arraycopy(source, 0, destination, 0, 5); // 将source数组的内容拷贝到destination
3. 当前时间
示例:
long startTime = System.currentTimeMillis();
// 执行某些操作
long endTime = System.currentTimeMillis();
System.out.println("耗时: " + (endTime - startTime) + " 毫秒");
4. 退出程序
示例:
System.exit(0); // 正常退出
5. 垃圾回收6. 系统属性
例如:
String javaVersion = System.getProperty("java.version");
System.out.println("Java version: " + javaVersion);
7. 环境变量
示例:
String path = System.getenv("PATH");
System.out.println("PATH 环境变量: " + path);
8. 安全管理器
System.setSecurityManager(SecurityManager securityManager) 用于设置一个安全管理器,控制程序的安全行为。通常用于限制对某些系统资源的访问。
9. 类加载器
System.getProperty(“user.dir”):获取用户当前的工作目录。
小结
System 类是 Java 的一个重要工具类,提供了大量与系统相关的功能,如时间、资源管理、输入输出流、退出程序等。由于其提供的功能多涉及到与底层操作系统的交互,因此它在很多 Java 程序中都扮演着至关重要的角色。