深入SpringBoot源码(五)设置ApplicationConversionService

由于我引入了spring-boot-starter-webflux依赖,经过了getOrCreateEnvironment方法后得到了一个ApplicationReactiveWebEnvironment
在这里插入图片描述
在这里插入图片描述

configureEnvironment方法按照environment.setConversionService -> configurePropertySources -> configureProfiles的顺序分别对属性源或配置文件进行细粒度控制

	protected void configureEnvironment(ConfigurableEnvironment environment, String[] args) {
   
		if (this.addConversionService) {
   
			environment.setConversionService(new ApplicationConversionService());
		}
		configurePropertySources(environment, args);
		configureProfiles(environment, args);
	}

addConversionService是SpringApplication的成员字段,默认值为true。ConfigurableEnvironment的void setConversionService(ConfigurableConversionService conversionService)方法继承于ConfigurablePropertyResolver接口, 该接口是PropertyResolver类型都将实现的配置接口。提供用于访问和自定义将属性值从一种类型转换为另一种类型时使用的ConversionService的工具。PropertyResolver是用于针对任何底层源解析属性的接口。

public interface PropertyResolver {
   

	/**
	 * 返回给定的属性键是否可用于解析,即给定键的值是否不为null。
	 */
	boolean containsProperty(String key);

	/**
	 * 返回与给定键关联的属性值,如果无法解析键,则返回null。
	 * @param key 要解析的属性名称
	 */
	@Nullable
	String getProperty(String key);

	/**
	 * 返回与给定键关联的属性值,如果无法解析键,则返回defaultValue。
	 * @param key 要解析的属性名称
	 * @param defaultValue 如果没有找到值,则返回默认值
	 */
	String getProperty(String key, String defaultValue);

	/**
	 * 返回与给定键关联的属性值,如果无法解析键,则返回null。
	 * @param key 要解析的属性名称
	 * @param targetType 属性值的预期类型
	 */
	@Nullable
	<T> T getProperty(String key, Class<T> targetType);

	/**
	 * 返回与给定键关联的属性值,如果无法解析键,则返回defaultValue 。
	 * @param key 要解析的属性名称
	 * @param targetType 属性值的预期类型
	 * @param defaultValue 如果没有找到值,则返回默认值
	 */
	<T> T getProperty(String key, Class<T> targetType, T defaultValue);

	/**
	 * 返回与给定键关联的属性值(从不为null)
	 * @throws IllegalStateException 如果无法解析给定的key
	 */
	String getRequiredProperty(String key) throws IllegalStateException;

	/**
	 * 返回与给定键关联的属性值,转换为给定的 targetType(从不为null )。
	 * @throws IllegalStateException 如果无法解析给定的key
	 */
	<T> T getRequiredProperty(String key, Class<T> targetType) throws IllegalStateException;

	/**
	 * 解析给定文本中的 ${...} 占位符,用getProperty解析的相应属性值替换它们。
	 * 没有默认值的不可解析占位符将被忽略并保持不变。
	 * @param text 要解析的字符串
	 * @
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值