如何获取系统环境变量,并通过注解注入到属性值?

如何获取系统环境变量,并通过注解注入到属性值?一、System.getProperties() 获取系统环境变量在工作中经常遇到获取系统环境变量,如获取当前资源路径、获取当前用户名等等,那如

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、System.getProperties() 获取系统环境变量

在工作中经常遇到获取系统环境变量,如获取当前资源路径、获取当前用户名等等,那如何获取所有的系统变量呢?通过System.getProperties()就可以了。

// 获取当前资源路径

System.getProperty(“user.dir”);

// 获取当前用户名

System.getProperty(“user.name”);

二、@Value注解支持属性值注入

在 Spring 组件中使用 @Value 注解的方式,可以很方便的读取 properties 文件的配置值。

@Value的属性值注入有两类:

  • ${ property : default_value }
  • #{ obj.property? : default_value }

第一个注入的是外部参数对应的property,第二个则是SpEL表达式对应的内容。

那个 default_value,就是前面的值为空时的默认值。注意二者的不同。

@Value 注解的使用场景很多,包括:

  • 在声明的变量中使用;
  • 在setter方法中;
  • 普通方法和构造方法中;

下面看看几个简单的示例:

@Value(“${username:rickie}”)

private String userName2;

如果username 没有设置值,userName2变量值将会设置为默认值rickie。

@Value(“${user.name:tom}”)

private String userName;

读取系统环境变量user.name,一般而言,系统环境变量user.name 都会有值,因此userName 变量将会设置为系统环境变量的值(用户名)。

@Value(“${user.age:25}”)

private Integer age;

给包装类型Integer或者简单类型int 设置默认值。

@Value(“${some.key:one,two,three}”)

private String[] stringArrayWithDefaults;

@Value(“${some.key:1,2,3}”)

private int[] intArrayWithDefaults;

数组的默认值可以使用逗号分割。

@Value(“#{systemProperties[‘user.name’] ?: ‘default username’}”)

private String spelWithDefaultValue;

使用 Spring Expression Language (SpEL) 设置默认值。

上面的代码表示在systemProperties中,如果没有设置 user.name 的值,my default system property value 会被设置成默认值。

使用 Spring @Value 为属性设置默认值。在项目中,提供合理的默认值,在大多情况下不用任何配置,就能直接使用。达到零配置的效果,降低被人使用的门槛。简化新Spring应用的搭建、开发、部署过程。

三、完整代码示例

下面的代码,整合了通过System.getProperties()获取系统环境变量和@Value注解注入属性值。

@RestController

public class TestController {

@Value(“${user.name:tom}”)

private String userName;

@Value(“${username:rickie}”)

private String userName2;

@Value(“${user.age:25}”)

private Integer age;

@Value(“#{systemProperties[‘user.name’] ?: ‘my default system property value’}”)

private String spelWithDefaultValue;

@RequestMapping(“/user”)

public String simple() {

return “Hello ” + userName + “, ” + age + “!<br />”

+ “userName2: ” + userName2 + “<br />”

+ spelWithDefaultValue + “<br />”

+ getProperties();

}

private String getProperties() {

StringBuilder sb = new StringBuilder();

Properties properties = System.getProperties();

Iterator it = properties.entrySet().iterator();

while(it.hasNext()){

Map.Entry entry=(Map.Entry)it.next();

Object key = entry.getKey();

Object value = entry.getValue();

sb.append(key +”: “+value + “<br />”);

}

return sb.toString();

}

}

输出结果:

如何获取系统环境变量,并通过注解注入到属性值?

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/36356.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信