spring applicaiton 之 Environment

org.springframework.core.env.Environment

环境,设置默认环境,激活开发,测试,生产等环境 该接口继承 PropertyResolver PropertyResolver的作用:根据Key获取value,解决占位符的问题 ${xxx}

先说说PropertySourcesPropertyResolver

org.springframework.core.env.ConfigurablePropertyResolver

继承 PropertyResolver

设置占位符前缀
设置占位符后缀
占位符中的分隔符,默认:(无法转换,就用:后面的值替代)
获取转换器 `ConversionService`,另开一篇文章专门介绍

org.springframework.core.env.AbstractPropertyResolver

实现 ConfigurablePropertyResolver

内置一个 `ConversionService`,主要目的是实现该方法:  
protected <T> T convertValueIfNecessary(Object value, @Nullable Class<T> targetType)

依赖 PropertyPlaceholderHelper。该类内置一个根据Key获取Valuer的接口
	@FunctionalInterface
	public interface PlaceholderResolver {

		/**
		 * Resolve the supplied placeholder name to the replacement value.
		 * @param placeholderName the name of the placeholder to resolve
		 * @return the replacement value, or {@code null} if no replacement is to be made
		 */
		@Nullable
		String resolvePlaceholder(String placeholderName);
	}
为什么不直接传递 AbstractPropertyResolver,接口隔离。Helper类的主要作用实现占位符替换。支持 ${xxx:yyy} ${aa${xxx}:yyyy}

org.springframework.core.env.PropertySourcesPropertyResolver

内部用 PropertySources 存储。PropertySource存储键值对的容器。 所有根据Key获取Value的最终都是从PropertySources获取。

org.springframework.core.env.ConfigurableEnvironment

设置默认环境,其它环境 合并另外一个环境 获取MutablePropertySources,系统参数-D,环境变量(操作系统层)

org.springframework.core.env.AbstractEnvironment

spring.profiles.active 可以逗号分隔进行配置 spring.profiles.default spring.getenv.ignore 不允许获取环境变量

org.springframework.core.env.StandardEnvironment

内部是环境变量和系统参数

	@Override
	protected void customizePropertySources(MutablePropertySources propertySources) {
		propertySources.addLast(new MapPropertySource(SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, getSystemProperties()));
		propertySources.addLast(new SystemEnvironmentPropertySource(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, getSystemEnvironment()));
	}

转载于:https://my.oschina.net/u/3217171/blog/3049222

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值