Skip to content

环境抽象 - Environment

概述

Environment 接口提供了统一的配置属性访问抽象,支持属性源、Profile 等高级特性。

核心能力矩阵

能力核心类解决的问题使用频率学习优先级
环境抽象Environment/PropertySource配置管理⭐⭐⭐⭐🟡 中

核心组件

主要功能

1. 属性访问

java
@Autowired
private Environment env;

// 获取属性
String property = env.getProperty("app.name");
Integer port = env.getProperty("server.port", Integer.class);
String defaultValue = env.getProperty("app.description", "Default Description");

// 检查属性是否存在
if (env.containsProperty("app.feature.enabled")) {
    // ...
}

2. Profile 管理

java
// 检查激活的 Profile
boolean isDev = env.acceptsProfiles(Profiles.of("dev"));
boolean isProd = env.acceptsProfiles(Profiles.of("prod"));

// 获取激活的 Profiles
String[] activeProfiles = env.getActiveProfiles();
String[] defaultProfiles = env.getDefaultProfiles();

3. 属性源

java
// 创建属性源
Map<String, Object> map = new HashMap<>();
map.put("custom.key", "custom.value");
PropertySource<?> propertySource = new MapPropertySource("custom", map);

// 添加到环境
MutablePropertySources propertySources = ((ConfigurableEnvironment) env).getPropertySources();
propertySources.addFirst(propertySource);

属性源优先级

  1. ServletConfig 参数
  2. ServletContext 参数
  3. JNDI 属性
  4. 系统环境变量
  5. 系统属性(-D 参数)
  6. 应用配置文件(application.properties/yml)

使用场景

  • 配置属性访问
  • 多环境配置(Profile)
  • 动态属性源
  • 配置中心集成

相关链接

基于 Apache 2.0 许可发布