实现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注解的方式把属性值注入进来。
相关文章
|
Java Maven Spring
maven项目,动态读取外部配置文件
maven项目,动态读取外部配置文件
302 0
|
Windows
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
不用 “netsh winsock reset” 命令解决 “在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配”
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
|
3月前
|
分布式计算 Linux 分布式数据库
环境变量配置文件中两种路径添加方式
本文介绍Linux环境下配置HBase与Spark的环境变量方法及区别。通过将`HBASE_HOME/bin`与`SPARK_HOME/bin`添加至`PATH`变量,实现命令行工具的全局访问。HBase将其置于`PATH`末尾,而Spark置于开头,这意味着Spark相关命令将被优先调用。这种设置便于管理软件依赖并确保正确版本的执行。
49 4
|
JavaScript 前端开发
脚本可放置与外部文件中
脚本可放置与外部文件中
62 1
|
运维 Java 开发者
配置文件的加载位置|学习笔记
快速学习配置文件的加载位置
配置文件的加载位置|学习笔记
直接取配置文件对应数据映射到对象中,可在代码中直接使用
直接取配置文件对应数据映射到对象中,可在代码中直接使用
|
Java 应用服务中间件 Apache
统一tomcat的程序包路径,日志路径,自定义变量,JAVA启动项的配置文件示例
统一tomcat的程序包路径,日志路径,自定义变量,JAVA启动项的配置文件示例
2411 0