Spring Environment(一)API 介绍
Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html)
Spring 3.1 提供了新的属性管理 API,而且功能非常强大且很完善,对于一些属性配置信息都应该使用新的 API 来管理。
Spring Environment 属性配置管理系列文章:
一、新的属性管理 API
PropertySource
:属性源,key-value 属性对抽象,比如用于配置数据PropertyResolver
:属性解析器,用于解析相应 key 的 valueEnvironment
:环境,本身是一个 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"));
}
参考:
- 《pring3.1新属性管理API:PropertySource、Environment、Profile》:https://jinnianshilongnian.iteye.com/blog/2000183
每天用心记录一点点。内容也许不重要,但习惯很重要!