最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot定制type Formatters實(shí)例詳解

 更新時(shí)間:2019年11月10日 09:11:54   作者:javaadu  
在本篇文章里小編給大家整理的是關(guān)于Spring Boot定制type Formatters實(shí)例知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。

前面我們有篇文章介紹了PropertyEditors,是用來(lái)將文本類(lèi)型轉(zhuǎn)換成指定的Java類(lèi)型,不過(guò),考慮到PropertyEditor的無(wú)狀態(tài)和非線程安全特性,Spring 3增加了一個(gè)Formatter接口來(lái)替代它。Formatters提供和PropertyEditor類(lèi)似的功能,但是提供線程安全特性,也可以實(shí)現(xiàn)字符串和對(duì)象類(lèi)型的互相轉(zhuǎn)換。

假設(shè)在我們的程序中,需要根據(jù)一本書(shū)的ISBN字符串得到對(duì)應(yīng)的book對(duì)象。通過(guò)這個(gè)類(lèi)型格式化工具,我們可以在控制器的方法簽名中定義Book參數(shù),而URL參數(shù)只需要包含ISBN號(hào)和數(shù)據(jù)庫(kù)ID。

實(shí)戰(zhàn)

  • 首先在項(xiàng)目根目錄下創(chuàng)建formatters包
  • 然后創(chuàng)建BookFormatter,它實(shí)現(xiàn)了Formatter接口,實(shí)現(xiàn)兩個(gè)函數(shù):parse用于將字符串ISBN轉(zhuǎn)換成book對(duì)象;print用于將book對(duì)象轉(zhuǎn)換成該book對(duì)應(yīng)的ISBN字符串。
package com.test.bookpub.formatters;

import com.test.bookpub.domain.Book;
import com.test.bookpub.repository.BookRepository;
import org.springframework.format.Formatter;
import java.text.ParseException;
import java.util.Locale;

public class BookFormatter implements Formatter<Book> {
 private BookRepository repository;

 public BookFormatter(BookRepository repository) {
  this.repository = repository;
 }
 
 @Override
 public Book parse(String bookIdentifier, Locale locale) throws ParseException {
  Book book = repository.findBookByIsbn(bookIdentifier);
  return book != null ? book : repository.findOne(Long.valueOf(bookIdentifier));
 }
 
 @Override
 public String print(Book book, Locale locale) {
  return book.getIsbn();
 }
}

在WebConfiguration中添加我們定義的formatter,重寫(xiě)(@Override修飾)addFormatter(FormatterRegistry registry)函數(shù)。

@Autowired
private BookRepository bookRepository;

@Override
public void addFormatters(FormatterRegistry registry) {
 registry.addFormatter(new BookFormatter(bookRepository));
}

最后,需要在BookController中新加一個(gè)函數(shù)getReviewers,根據(jù)一本書(shū)的ISBN號(hào)獲取該書(shū)的審閱人。

@RequestMapping(value = "/{isbn}/reviewers", method = RequestMethod.GET)
public List<Reviewer> getReviewers(@PathVariable("isbn") Book book) {
 return book.getReviewers();
}

通過(guò)mvn spring-boot:run運(yùn)行程序

通過(guò)httpie訪問(wèn)URL——http://localhost:8080/books/9781-1234-1111/reviewers,得到的結(jié)果如下:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Date: Tue, 08 Dec 2015 08:15:31 GMT
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked

[]

分析

Formatter工具的目標(biāo)是提供跟PropertyEditor類(lèi)似的功能。通過(guò)FormatterRegistry將我們自己的formtter注冊(cè)到系統(tǒng)中,然后Spring會(huì)自動(dòng)完成文本表示的book和book實(shí)體對(duì)象之間的互相轉(zhuǎn)換。由于Formatter是無(wú)狀態(tài)的,因此不需要為每個(gè)請(qǐng)求都執(zhí)行注冊(cè)formatter的動(dòng)作。

使用建議:如果需要通用類(lèi)型的轉(zhuǎn)換——例如String或Boolean,最好使用PropertyEditor完成,因?yàn)檫@種需求可能不是全局需要的,只是某個(gè)Controller的定制功能需求。

我們?cè)赪ebConfiguration中引入(@Autowired)了BookRepository(需要用它創(chuàng)建BookFormatter實(shí)例),Spring給配置文件提供了使用其他bean對(duì)象的能力。Spring本身會(huì)確保BookRepository先創(chuàng)建,然后在WebConfiguration類(lèi)的創(chuàng)建過(guò)程中引入。

以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn)內(nèi)容,感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。

相關(guān)文章

  • java實(shí)現(xiàn)可視化日歷

    java實(shí)現(xiàn)可視化日歷

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)可視化日歷,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • SpringBoot實(shí)現(xiàn)excel生成并且通過(guò)郵件發(fā)送的步驟詳解

    SpringBoot實(shí)現(xiàn)excel生成并且通過(guò)郵件發(fā)送的步驟詳解

    實(shí)際開(kāi)發(fā)中,特別是在B端產(chǎn)品的開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到導(dǎo)出excel的功能,更進(jìn)階一點(diǎn)的需要我們定期生成統(tǒng)計(jì)報(bào)表,然后通過(guò)郵箱發(fā)送給指定的人員,?今天要帶大家來(lái)實(shí)現(xiàn)的就是excel生成并通過(guò)郵件發(fā)送,需要的朋友可以參考下
    2023-10-10
  • Java多線程連續(xù)打印abc實(shí)現(xiàn)方法詳解

    Java多線程連續(xù)打印abc實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Java多線程連續(xù)打印abc實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java學(xué)習(xí)筆記之eclipse+tomcat 配置

    java學(xué)習(xí)筆記之eclipse+tomcat 配置

    俗話說(shuō):工欲善其事必先利其器,既然要學(xué)習(xí)java,首先把java的開(kāi)發(fā)環(huán)境搗鼓一下吧,這里我們來(lái)談?wù)別clipse+tomcat的配置方法。
    2014-11-11
  • java應(yīng)用cpu占用過(guò)高問(wèn)題分析及解決方法

    java應(yīng)用cpu占用過(guò)高問(wèn)題分析及解決方法

    這篇文章主要介紹了java應(yīng)用cpu占用過(guò)高問(wèn)題分析及解決方法,具有一定參考價(jià)值,需要的朋友可以參考下。
    2017-09-09
  • 詳解Spring事件發(fā)布與監(jiān)聽(tīng)機(jī)制

    詳解Spring事件發(fā)布與監(jiān)聽(tīng)機(jī)制

    Spring提供了ApplicationContext事件機(jī)制,可以發(fā)布和監(jiān)聽(tīng)事件,這個(gè)特性非常有用。Spring內(nèi)置了一些事件和監(jiān)聽(tīng)器,例如在Spring容器啟動(dòng)前,Spring容器啟動(dòng)后,應(yīng)用啟動(dòng)失敗后等事件發(fā)生后,監(jiān)聽(tīng)在這些事件上的監(jiān)聽(tīng)器會(huì)做出相應(yīng)的響應(yīng)處理
    2021-06-06
  • Spring?Cloud?Hystrix原理與注意事項(xiàng)小結(jié)

    Spring?Cloud?Hystrix原理與注意事項(xiàng)小結(jié)

    本文介紹了Hystrix的基本概念、工作原理以及其在實(shí)際開(kāi)發(fā)中的應(yīng)用方式,通過(guò)對(duì)Hystrix的深入學(xué)習(xí),開(kāi)發(fā)者可以在分布式系統(tǒng)中實(shí)現(xiàn)精細(xì)的錯(cuò)誤處理機(jī)制,并能夠及時(shí)響應(yīng)系統(tǒng)中的異常,避免服務(wù)的連鎖崩潰,感興趣的朋友一起看看吧
    2025-03-03
  • java的Arrays工具類(lèi)實(shí)戰(zhàn)

    java的Arrays工具類(lèi)實(shí)戰(zhàn)

    java.util.Arrays類(lèi)能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的。Arrays作為一個(gè)工具類(lèi),能很好的操作數(shù)組。下面介紹主要使用的幾個(gè)函數(shù)
    2016-12-12
  • Spring Boot DevTools使用教程

    Spring Boot DevTools使用教程

    DevTools通過(guò)提供自動(dòng)重啟和LiveReload功能,使您更快、更輕松地開(kāi)發(fā)Spring Boot應(yīng)用程序。這篇文章主要介紹了Spring Boot DevTools使用教程,需要的朋友可以參考下
    2018-11-11
  • java中斷線程的正確姿勢(shì)完整示例

    java中斷線程的正確姿勢(shì)完整示例

    這篇文章主要為大家介紹了java中斷線程的正確姿勢(shì)完整示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

缙云县| 两当县| 宜城市| 郎溪县| 屯昌县| 昌吉市| 洪泽县| 临湘市| 琼中| 漳州市| 文成县| 汕尾市| 吉木乃县| 扶沟县| 策勒县| 屯留县| 鄂尔多斯市| 安塞县| 巩留县| 临沂市| 晋江市| 囊谦县| 德钦县| 云龙县| 青州市| 莎车县| 常州市| 高邮市| 凭祥市| 寻乌县| 通辽市| 咸丰县| 永修县| 承德市| 班玛县| 紫金县| 两当县| 沽源县| 金山区| 格尔木市| 宝应县|