实现EnvironmentAware接口 将配置文件中的属性放置到系统环境变量中

简介: 实现EnvironmentAware接口 将配置文件中的属性放置到系统环境变量中

有个需求是

将配置文件中的属性放置到系统环境变量中,可以使用System.get获取到;

这个时候使用EnvironmentAware最是方便;原因是:

  • 所有的配置信息,都会加载到Environment实体中,因此我们可以通过这个对象来获取系统的配置,通过这种方式不仅可以获取application.yml配置信息,还可以获取更多的系统信息;
  • 凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量。

使用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来说,是提供给用户方便的服务接口、方便撰写配置、方便解析配置。

  • 绝大数情况下,bean都不需要直接访问Environment对象,而是通过类似@Value注解的方式把属性值注入进来。
相关文章
|
10月前
|
Java Maven Spring
maven项目,动态读取外部配置文件
maven项目,动态读取外部配置文件
228 0
|
Windows
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
不用 “netsh winsock reset” 命令解决 “在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配”
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
|
11月前
|
存储
jupyter修改默认存储路径
jupyter修改默认存储路径
129 0
|
JavaScript 前端开发
脚本可放置与外部文件中
脚本可放置与外部文件中
42 1
|
Java 应用服务中间件
publiccms中,怎么修改默认的端口8080以及默认上下文名称
publiccms中,怎么修改默认的端口8080以及默认上下文名称
106 0
|
运维 Java 开发者
配置文件的加载位置|学习笔记
快速学习配置文件的加载位置
112 0
配置文件的加载位置|学习笔记
C#编程-14:自定义环境变量
C#编程-14:自定义环境变量
C#编程-14:自定义环境变量
|
Java 应用服务中间件 Apache
统一tomcat的程序包路径,日志路径,自定义变量,JAVA启动项的配置文件示例
统一tomcat的程序包路径,日志路径,自定义变量,JAVA启动项的配置文件示例
2363 0