文档章节

spring applicaiton 之 Environment

my_juke
 my_juke
发布于 05/14 10:35
字数 401
阅读 6
收藏 0

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()));
	}

© 著作权归作者所有

my_juke
粉丝 4
博文 34
码字总数 22261
作品 0
深圳
私信 提问
dockerfile 构建 spring boot 镜像

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: 运行镜像: 服务已经启动了 dockerfile 文件如下: 查看容器内部: 这个操作就是把当前目录下的所有文件都添加到了容器...

Canaan_
04/19
88
0
深入Spring Boot:Spring Context的继承关系和影响

前言 对于一个简单的Spring boot应用,它的spring context是只会有一个。 非web spring boot应用,context是 web spring boot应用,context是 是spring boot里自己实现的一个context,主要功...

横云断岭
2018/12/10
31
0
Spring Cloud Config 规范

Spring Cloud Config 规范 首先Spring Cloud 是基于 Spring 来扩展的,Spring 本身就提供当创建一个Bean时可从Environment 中将一些属性值通过@Value的形式注入到业务代码中的能力。那Sprin...

中间件小哥
2018/12/12
0
0
使用Log4J来作为Spring Boot的日志系统

修改 排除掉对logback的依赖,添加对log4j的依赖 2.设置定log4j的配置文件位置,例如: 把文件放到目录下,然后在文件里设置 3. 在Spring Boot的启动类里用代码手动加载log4j,例如:...

白石
2017/11/02
242
0
兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil

为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类。 在 Spring Boot 中,能够直接注入 XXProperties 类的地方不需要使用这个工具类。 但是...

Ala6
2018/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

同名依赖,多次引入导致的程序错误

表现: 本地测试正常,打包上线后报错找不到某个方法(缺少依赖),检测依赖发现,同名依赖有两个版本。 解决:删除一个,程序正常

避难所
26分钟前
3
0
在HTML中的下拉框中实现超连接

<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <link rel="canonical" href="https://blog.csdn.net/weixin_34228617/article/details/86130280"/> ......

mickelfeng
31分钟前
3
0
Content7关闭防火墙命令

在外部访问CentOS中部署应用时,需要关闭防火墙。 关闭防火墙命令:systemctl stop firewalld.service 开启防火墙:systemctl start firewalld.service 关闭开机自启动:systemctl disable f...

无名氏的程序员
32分钟前
3
0
分布式存储原理:TiDB

浮躁的码农
45分钟前
6
0
CSS实现圆角边框的完美解决方案

css实现图片圆角,兼容所有浏览器: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <style type= "text/css" > /*通用样式--容器宽度值*/ .s......

前端老手
59分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部