Spring Environment(一)API 介绍

Spring Environment(一)API 介绍

Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html)

Spring 3.1 提供了新的属性管理 API,而且功能非常强大且很完善,对于一些属性配置信息都应该使用新的 API 来管理。

Spring Environment 属性配置管理系列文章:

  1. Spring ConversionService 类型转换(一)Converter
  2. Spring ConversionService 类型转换(二)ConversionService

一、新的属性管理 API

  • PropertySource:属性源,key-value 属性对抽象,比如用于配置数据
  • PropertyResolver:属性解析器,用于解析相应 key 的 value
  • Environment:环境,本身是一个 PropertyResolver,但是提供了 Profile 特性,即可以根据环境得到相应数据(即激活不同的 Profile,可以得到不同的属性数据,比如用于多环境场景的配置(正式机、测试机、开发机 DataSource 配置)
  • Profile:剖面,只有激活的剖面的组件/配置才会注册到 Spring 容器,类似于 maven 中 profile

也就是说,新的 API 主要从配置属性、解析属性、不同环境解析不同的属性、激活哪些组件/配置进行注册这几个方面进行了重新设计,使得 API 的目的更加清晰,而且功能更加强大。

@Test
public void test() {
    Environment env = new StandardEnvironment();
    // 1. 操作系统的环境变量
    Map<String, Object> systemEnvironment = ((StandardEnvironment) env).getSystemEnvironment();
    Assert.assertNotNull(systemEnvironment);

    // 2. JVM 属性配置
    Map<String, Object> systemProperties = ((StandardEnvironment) env).getSystemProperties();
    Assert.assertNotNull(systemProperties);

    // 3. 属性
    Assert.assertEquals("UTF-8", env.getProperty("file.encoding"));
    Assert.assertTrue(env.containsProperty("file.encoding"));

    // 4. 剖面 spring.profiles.default(默认为 default) spring.profiles.active
    //    只要有一个返回 true acceptsProfiles 方法就返回 true,!a 为不包含该 profiles
    Assert.assertTrue(env.acceptsProfiles("default"));
    Assert.assertTrue(env.acceptsProfiles("a", "default"));
    Assert.assertFalse(env.acceptsProfiles("a"));
    Assert.assertTrue(env.acceptsProfiles("!a", "b"));
}

参考:

  1. 《pring3.1新属性管理API:PropertySource、Environment、Profile》:https://jinnianshilongnian.iteye.com/blog/2000183

每天用心记录一点点。内容也许不重要,但习惯很重要!

猜你喜欢

转载自www.cnblogs.com/binarylei/p/10280374.html
今日推荐