在Spring中当我们想拿到配置文件(不管是yml格式还是.properties格式)中的配置信息时,有很多种方式,采用Environment去获取是其中一种,优势是:

  • 可以通过getProperty这种比较通用的api来根据key获取value。
  • 当存在多份配置文件(比如SpringBoot应用jar包中有application.yml文件,外部也有application.yml文件),能取到生效的配置文件信息。

一、使用示例如下(前提是在spring的应用中):

package com.springDemodemo;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.env.Environment;@SpringBootTest
public class EnvironmentTest {@AutowiredEnvironment environment;@Testpublic void getProperty() {System.out.println(environment.getProperty("hello"));}}

配置文件信息如下:

hello=world

打印结果如下:

world

二、封装为工具类

package com.springDemodemo.utils;import org.springframework.core.env.Environment;public class EnvironmentUtil {public static Environment environment = SpringUtils.getBean(Environment.class);public static String getProperty(String key) {return environment.getProperty(key);}
}

用到的SpringUtils类如下:

package com.springDemodemo.utils;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Component;@Component
public final class SpringUtils implements BeanFactoryPostProcessor {/*** Spring应用上下文环境*/private static ConfigurableListableBeanFactory beanFactory;@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {SpringUtils.beanFactory = beanFactory;}/*** 获取类型为requiredType的对象** @param clz* @return* @throws BeansException*/public static <T> T getBean(Class<T> clz) throws BeansException {T result = (T) beanFactory.getBean(clz);return result;}}

Spring中Environment的使用相关推荐

  1. Spring中Environment详解,一文搞透Spring运行环境Environment

    文章目录 一.理解 Spring Environment 抽象 1.源码初识 二.Environment 占位符处理 1.Spring 3.1 前占位符处理 2.Spring 3.1 + 占位符处理 ...

  2. spring中environment设计与实现

    1.environment类层次

  3. Spring 中的 context

    Spring 中的 context BeanFactory 首先看下,官方在代码中给出的注释: The root interface for accessing a Spring bean conta ...

  4. spring之Environment

    Spring 的Environment包含两方便的抽象,profile和 property 前者是一组bean的定义,只有相应的profile被激活的情况下才会起作用. 后者是提供方便的抽象,应用程序 ...

  5. Spring 中 Bean 的生命周期

    本文作者: 伯乐在线 - yemengying 智商捉鸡?,实在没办法一下子理解Spring IoC和AOP的实现原理,看的闹心也不太懂,所以...决定拆成小的不能在小的一个个问题,一点点啃.今天先来 ...

  6. 原创 | 我被面试官给虐懵了,竟然是因为我不懂Spring中的@Configuration

    这是Hollis的第 216 篇原创分享 作者 l cxuan 来源 l Hollis(ID:hollischuang) 现在大部分的Spring项目都采用了基于注解的配置,采用了@Configura ...

  7. Spring中调用远程EJB的配置

    http://smarttao.bokee.com/3961393.html 对于一些遗留项目,实现EJB的远程调用是很有必要的,这里就简单介绍一下Spring中的配置和调用方式,从中可以感受到Spr ...

  8. 我被面试官给虐懵了,竟然是因为我不懂Spring中的@Configuration

    作者 l cxuan 来源 l Hollis(ID:hollischuang) 现在大部分的Spring项目都采用了基于注解的配置,采用了@Configuration 替换标签的做法.一行简单的注解就 ...

  9. spring中context:property-placeholder标签详解

    spring中context:property-placeholder标签的使用说明 1,有些参数在某些阶段中是常量. 在开发阶段我们连接数据库时的url,username,password等信息 分 ...

  10. 四、Spring中使用@Conditional按照条件注册Bean

    以前其实是写过@Condtional注解的笔记的,这里附上链接: Spring中的@conditional注解 但已经忘记的差不多了,所以今天再重新学习下,可以互补着学习 @Contional:按照一 ...

最新文章

  1. 1-3_基本概念_程序进程
  2. bzoj 1045 [HAOI2008] 糖果传递 —— 贪心
  3. Polya原理的应用经典实例
  4. cocos2d-x win8下的环境配置和建立项目
  5. [?]Oracle 10g sqlplus 的Bug?
  6. postgresql数据库连接池pgbouncer的搭建
  7. 【跃迁之路】【500天】程序员高效学习方法论探索系列(实验阶段257-2018.06.20)...
  8. 算法分析设计--递归算法
  9. 几个WMS的问题处理
  10. Spring框架学习笔记10:基于XML配置方式SSM框架西蒙购物网
  11. oracle如何判断奇数偶数_图解面试题:如何分析中位数?
  12. Essential C++中文版——满汉全席之外
  13. Linux_数据段、代码段、堆栈段、BSS段的区别
  14. 知识图谱-命名实体-关系-免费标注工具-快速打标签-Python3
  15. 软件工程pert图_《软件工程》软件项目管理实验
  16. 与关系型数据库相比,MongoDB的优缺点
  17. windows系统笔记本连接外部显示器进行分屏
  18. 用计算机求a的平方根的顺序,算术平方根练习题
  19. 下一关口令:别犹“豫”,看“浙”里,一起“皖”
  20. Postgis使用工具raster2pgsql批量导入栅格数据(二)

热门文章

  1. wii手柄_Wii时代的隐藏宝石
  2. Unity常用工作视图(上)(5大基本视图)
  3. 什么是监控报警以及如何实现,超详细讲解
  4. 超声波测距仪编程_超声波测距详细资料及程序代码
  5. 改变蜡笔小新的眼睛颜色(对bmp图像的部分更改)
  6. PHP在线横幅广告店标LOGO制作网站源码
  7. 9个最适合Elementor的免费主题【官方推荐】
  8. 联想计算机安装系统,联想计算机重新安装系统的详细步骤?
  9. Python数据分析U3-matplotlib可视化基础
  10. 中微区块链集团参加(深圳)首届全球供应链数字经济峰会