有个需求是
将配置文件中的属性放置到系统环境变量中,可以使用System.get获取到;
这个时候使用EnvironmentAware最是方便;原因是:
使用Vaule注解也可以获取到配置中的属性
代码如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@Configuration
public class MyEnvironmentAware implements EnvironmentAware {
@Value("${web..url}")
String webUrl;
@Value("${user.name}")
String userName;
@Value("${user.password}")
String password;
@Override
public void setEnvironment(Environment environment) {
System.out.println(webUrl);
System.out.println(environment.getProperty("web.url"));
System.out.println(System.setProperty("web.url",webUrl));
}
}
关于Environment
Environment表示整个应用运行时的环境即Spring应用所处的环境。
Environment在容器中是一个抽象的集合,是指应用环境的2个方面:profiles和properties。
profile配置是一个被命名的、bean定义的逻辑组,这些bean只有在给定的profile配置激活时才会注册到容器。Environment环境对象的作用,对于profiles配置来说,它能决定当前激活的是哪个profile配置,和哪个profile是默认。 只有当一个profile处于active状态时,它对应的逻辑上组织在一起的这些Bean定义才会被注册到容器中。
properties属性可能来源于properties文件、JVM properties、system环境变量、JNDI、servlet context parameters上下文参数、专门的properties对象,Maps等等。Environment对象的作用,对于properties来说,是提供给用户方便的服务接口、方便撰写配置、方便解析配置。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。