电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

當然,任何時候都可以使用字符串作為屬性的值,從配置文件里讀取出來,如下:

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

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

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

對應屬性為:

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

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

但這樣做有一些問題:

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

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

先定義一個Java Bean,用以表示實際的配置內(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}

接著肯定需要一個轉(zhuǎn)換類,需要實現(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]); }}

這個轉(zhuǎn)換類就是轉(zhuǎn)換邏輯,如果把字符串轉(zhuǎn)換成對應的類。

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

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

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

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

屬性的類型為Admin,是一個自定義的類。啟動訪問后獲取如下:

$ curl localhost:8081/getAdminBean

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

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

嘗試把配置改為:pkslow.admin=larry|18a|admin@pkslow.com,則啟動時會報錯:

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)換類還是非常有用的。

代碼請查看:https://github.com/LarryDpk/pkslow-samples

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

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

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 郑州墨香品牌设计公司|品牌全案VI设计公司| 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 建筑资质代办-建筑资质转让找上海国信启航 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 河南凯邦机械制造有限公司 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 鲸鱼视觉 -数字展厅多媒体互动展示制作公司 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] |