一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - spring-core組件詳解——PropertyResolver屬性解決器

spring-core組件詳解——PropertyResolver屬性解決器

2020-04-25 15:42拉風(fēng)小野驢 JAVA教程

這篇文章主要介紹了spring-core組件詳解——PropertyResolver屬性解決器,需要的朋友可以參考下

PropertyResolver屬性解決器,主要具有兩個(gè)功能:

通過propertyName屬性名獲取與之對(duì)應(yīng)的propertValue屬性值(getProperty)。

把${propertyName:defaultValue}格式的屬性占位符,替換為實(shí)際的值(resolvePlaceholders)。

注意:getProperty獲取的屬性值,全都是調(diào)用resolvePlaceholders進(jìn)行占位符替換后的值。

組件體系圖如下:

spring-core組件詳解——PropertyResolver屬性解決器

PropertyResolver接口:
該接口定義了組件所具有的所有功能。其一是通過key獲取對(duì)應(yīng)的value,當(dāng)獲取不到value時(shí),有3種選擇:返回null值、使用指定的默認(rèn)值或者拋出一個(gè)非法狀態(tài)異常。獲取到的value值默認(rèn)是String類型,當(dāng)然也可以認(rèn)為指定一種類型,這依賴于ConversionService進(jìn)行類型轉(zhuǎn)換。
另外還有一個(gè)問題:屬性值中可以包含${}格式的占位符,因此,接口添加了另一個(gè)功能就是替換屬性值中的占位符(注意:屬性名是不允許存在占位符的,就算存在,組件也不會(huì)當(dāng)作占位符進(jìn)行替換)。當(dāng)占位符無法替換時(shí),也有2種選擇:保持原樣或者拋出一個(gè)非法參數(shù)異常。具體接口如下:


spring-core組件詳解——PropertyResolver屬性解決器

ConfigurablePropertyResolver接口:
該接口定義了如何對(duì)組件本身進(jìn)行配置。如:剛剛提到獲取value時(shí)可以指定任意類型,這依賴于ConversionService進(jìn)行類型轉(zhuǎn)換,當(dāng)前接口就提供了對(duì)ConversionService的設(shè)置和獲取。另外,可以配置屬性占位符的格式,包括:占位符前綴(默認(rèn)為"${")、占位符后綴(默認(rèn)為"}")、占位符值分隔符(默認(rèn)為":",用于分隔propertyName和defaultValue)。組件還可以設(shè)置哪些屬性是必須存在的,還可以校驗(yàn)必須存在的屬性是否真的存在(不存在的話會(huì)拋出異常)。具體接口如下:


spring-core組件詳解——PropertyResolver屬性解決器

AbstractPropertyResolver類:
上述兩個(gè)接口的抽象實(shí)現(xiàn)類。它實(shí)現(xiàn)了ConfigurablePropertyResolver接口的所有方法。關(guān)于PropertyResolver接口方法,還有3個(gè)getProperty方法需要子類實(shí)現(xiàn)(其他重載方法均調(diào)用這3個(gè)方法):

?
1
2
3
4
5
6
7
8
9
10
String getProperty(String key);
<T> T getProperty(String key, Class<T> targetType);
<T> Class<T> getPropertyAsClass(String key, Class<T> targetType);
/**
* 當(dāng)前類還額外定義了一個(gè)抽象方法,用于直接返回獲取到的value值(不進(jìn)行占位符替換)。
* 一般的getProperty方法默認(rèn)都會(huì)替換掉value值中的占位符后返回。
*/
protected abstract String getPropertyAsRawString(String key);
至于替換屬性占位符,則借助2個(gè)PropertyPlaceholderHelper屬性占位符助手(工具類)對(duì)象完成,
2個(gè)對(duì)象一個(gè)為嚴(yán)格模式,一個(gè)為非嚴(yán)格模式。

PropertySourcesPropertyResolver類:
該類是體系中唯一的完整實(shí)現(xiàn)類。它以PropertySources屬性源集合(內(nèi)部持有屬性源列表List<PropertySource>)為屬性值的來源,按序遍歷每個(gè)PropertySource,獲取到一個(gè)非null的屬性值則返回。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人捅女人漫画 | 男同桌脱我奶罩吸我奶作文 | 洗濯屋动漫在线观看 | 亚洲精品视频观看 | 70岁多老妇人特黄a级毛片 | 亚洲一成人毛片 | 秘书喂奶好爽一边 | 亚洲人成网站在线观看90影院 | 色综合图片 | 国产私拍精品88福利视频 | 热99在线观看 | 免费岛国片 | 视频一区二区在线 | 亚洲国产精品综合一区在线 | 欧美亚洲一区二区三区 | 亚洲AV蜜桃永久无码精品红樱桃 | 亚洲免费在线观看视频 | 69热视频| 色哟哟在线视频 | 勾搭已婚高h | 暖暖 免费 高清 日本 在线 | 日韩视频在线免费观看 | 日本一区二区三区久久 | beeg最新| 亚洲可乐操 | 精品亚洲综合久久中文字幕 | 成人精品一区二区三区 | 国产精品久久久久久久久免费 | 青青久在线视频免费观看 | 日本国产一区二区三区 | 无码乱人伦一区二区亚洲一 | 色哟哟观看 | 亚洲系列第一页 | 日日射视频 | 99久久国产亚洲综合精品 | ferr孕妇videos毛茸茸 | 免费视频大全 | 免费视频一区二区 | 草大逼 | 丰满大屁股美女一级毛片 | 91久久碰国产 |