午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談讓@Value更方便的Spring自定義轉(zhuǎn)換類(lèi)

瀏覽:108日期:2023-07-07 14:43:49
目錄一、萬(wàn)能的字符串二、自定義轉(zhuǎn)換類(lèi)三、總結(jié)一、萬(wàn)能的字符串

當(dāng)然,任何時(shí)候都可以使用字符串作為屬性的值,從配置文件里讀取出來(lái),如下:

配置文件內(nèi)容為:

pkslow.admin=larry|18|admin@pkslow.com

通過(guò)|分割,分別是名字、年齡和郵箱。

對(duì)應(yīng)屬性為:

@Value('${pkslow.admin}')private String admin;

使用字符串,總是可以獲取,并且不會(huì)報(bào)錯(cuò)。我們可以在使用屬性的時(shí)候,再轉(zhuǎn)換成其它Bean。

但這樣做有一些問(wèn)題:

無(wú)法做配置檢驗(yàn),不管是否配置錯(cuò)誤,String類(lèi)型的屬性都是可以讀取的; 任何地方使用,都需要做顯式轉(zhuǎn)換。二、自定義轉(zhuǎn)換類(lèi)

使用自定義轉(zhuǎn)換類(lèi)是更方便和安全的做法。我們來(lái)看看怎么實(shí)現(xiàn)。

先定義一個(gè)Java Bean,用以表示實(shí)際的配置內(nèi)容:

package com.pkslow.cloud.rest.model;public class Admin { private String name; private Integer age; private String email; public Admin(String name, Integer age, String email) {this.name = name;this.age = age;this.email = email; } //getter and setter}

接著肯定需要一個(gè)轉(zhuǎn)換類(lèi),需要實(shí)現(xiàn)Converter接口:

package com.pkslow.cloud.rest.model;import org.springframework.core.convert.converter.Converter;public class AdminConverter implements Converter<String, Admin> { @Override public Admin convert(String s) {String[] strings = s.split('|');return new Admin(strings[0], Integer.parseInt(strings[1]), strings[2]); }}

這個(gè)轉(zhuǎn)換類(lèi)就是轉(zhuǎn)換邏輯,如果把字符串轉(zhuǎn)換成對(duì)應(yīng)的類(lèi)。

完成以上兩步,關(guān)鍵是如果告訴Spring我具備了這個(gè)轉(zhuǎn)換能力,并幫我轉(zhuǎn)換。需要把轉(zhuǎn)換類(lèi)綁定一下:

package com.pkslow.cloud.rest.config;import com.pkslow.cloud.rest.model.AdminConverter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.support.ConversionServiceFactoryBean;import java.util.Collections;@Configurationpublic class AdminConversionServiceConfig { @Bean public ConversionServiceFactoryBean conversionService() {ConversionServiceFactoryBean factoryBean = new ConversionServiceFactoryBean();factoryBean.setConverters(Collections.singleton(new AdminConverter()));return factoryBean; }}

有了以上功能,使用就非常簡(jiǎn)單了。配置不變,使用如下:

package com.pkslow.cloud.rest;import com.pkslow.cloud.rest.model.Admin;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class PkslowController { @Value('${pkslow.admin}') private Admin adminBean; @GetMapping('/getAdminBean') public Admin getAdminBean() {return adminBean; }}

屬性的類(lèi)型為Admin,是一個(gè)自定義的類(lèi)。啟動(dòng)訪問(wèn)后獲取如下:

$ curl localhost:8081/getAdminBean

{'name':'larry','age':18,'email':'admin@pkslow.com'}

說(shuō)明成功讀取了配置,并轉(zhuǎn)換成我們想要的domain Object。

嘗試把配置改為:pkslow.admin=larry|18a|admin@pkslow.com,則啟動(dòng)時(shí)會(huì)報(bào)錯(cuò):

Caused by: org.springframework.core.convert.ConversionFailedException: 

Failed to convert from type [java.lang.String] to type [@org.springframework.beans.factory.annotation.Value com.pkslow.cloud.rest.model.Admin] 

for value ’larry|18a|admin@pkslow.com’; 

nested exception is java.lang.NumberFormatException: For input string: '18a'

可以做配置檢查。

三、總結(jié)

自定義轉(zhuǎn)換類(lèi)還是非常有用的。

代碼請(qǐng)查看:https://github.com/LarryDpk/pkslow-samples

淺談讓@Value更方便的Spring自定義轉(zhuǎn)換類(lèi)

以上就是淺談讓@Value更方便的Spring自定義轉(zhuǎn)換類(lèi)的詳細(xì)內(nèi)容,更多關(guān)于Spring自定義轉(zhuǎn)換類(lèi)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 91喷潮| 欧美一级片在线免费观看 | 国产高清一级片 | 亚洲二区av | 狠狠操在线| 97超碰人人模人人人爽人人爱 | 日韩美女一区 | 四虎av在线播放 | 精品视频91 | 亚洲成年人在线 | 日韩大片免费观看 | 国内久久精品 | 狠狠操五月天 | 日本三日本三级少妇三级66 | 色人阁av| 91麻豆免费看 | 欧美日韩一二三 | 伦hdwww日本bbw另类 | 日韩一区二区在线观看 | 国产手机在线视频 | 中文字幕精品视频在线观看 | 国产精品久久久 | 国产精品久久久久久久天堂第1集 | 久久深夜福利 | 骚鸭av| 爱爱精品| 狠久久| 欧美亚洲专区 | 午夜影院日本 | 91av视频在线观看 | 国产精品综合 | 怡红院成人在线 | 国产精品自产拍 | 99热在线观看精品 | 四虎在线免费播放 | 都市激情中文字幕 | 日韩黄色免费网站 | 亚洲国产美女视频 | 国产一区a | 国产不卡网| 在线观看免费黄色小视频 |