国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

淺談讓@Value更方便的Spring自定義轉換類

瀏覽:19日期:2023-07-07 14:43:49
目錄一、萬能的字符串二、自定義轉換類三、總結一、萬能的字符串

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

配置文件內容為:

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

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

對應屬性為:

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

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

但這樣做有一些問題:

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

使用自定義轉換類是更方便和安全的做法。我們來看看怎么實現。

先定義一個Java Bean,用以表示實際的配置內容:

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}

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

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

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

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

說明成功讀取了配置,并轉換成我們想要的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'

可以做配置檢查。

三、總結

自定義轉換類還是非常有用的。

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

淺談讓@Value更方便的Spring自定義轉換類

以上就是淺談讓@Value更方便的Spring自定義轉換類的詳細內容,更多關于Spring自定義轉換類的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: 曰本女人色黄网站 | 九九九热视频 | 久久黄色精品视频 | 日本aaaaa毛片动漫 | 99久久免费午夜国产精品 | 精品午夜一区二区三区在线观看 | 亚洲最大激情中文字幕 | 精品小视频在线观看 | 亚洲免费专区 | 美国一级毛片片aa成人 | 亚洲欧美激情精品一区二区 | 久久精品系列 | 国产一级片毛片 | 国产高清久久 | 亚洲国产成人综合 | 99在线精品视频在线观看 | 欧美一级欧美一级毛片 | 九九热爱视频精品视频高清 | 日韩视频在线观看中字 | 在线观看视频一区二区三区 | 久久精品视频91 | 成人免费真人毛片视频 | 欧美特级毛片aaaa | 欧美中文字幕 | 久草在线中文最新视频 | 亚洲国产精品第一区二区三区 | 日本一级毛片片在线播放 | 国产亚洲高清在线精品99 | 久久免费99精品久久久久久 | 在线视频区 | 丰满寡妇一级毛片 | 日本波多野结衣在线 | 国产成人综合亚洲亚洲欧美 | 久久99热精品免费观看欧美 | a毛片免费全部播放完整成 a毛片免费全部在线播放毛 | 国产成人综合手机在线播放 | 日本免费一区二区三区视频 | 国产精品国产国产aⅴ | 日韩一区三区 | 欧美一区二区三区视视频 | 国产免费久久精品99久久 |