最新国产好看的视频,伊人天堂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,是用來將文本類型轉(zhuǎn)換成指定的Java類型,不過,考慮到PropertyEditor的無狀態(tài)和非線程安全特性,Spring 3增加了一個(gè)Formatter接口來替代它。Formatters提供和PropertyEditor類似的功能,但是提供線程安全特性,也可以實(shí)現(xiàn)字符串和對象類型的互相轉(zhuǎn)換。

假設(shè)在我們的程序中,需要根據(jù)一本書的ISBN字符串得到對應(yīng)的book對象。通過這個(gè)類型格式化工具,我們可以在控制器的方法簽名中定義Book參數(shù),而URL參數(shù)只需要包含ISBN號(hào)和數(shù)據(jù)庫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對象;print用于將book對象轉(zhuǎn)換成該book對應(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,重寫(@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ù)一本書的ISBN號(hào)獲取該書的審閱人。

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

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

通過httpie訪問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類似的功能。通過FormatterRegistry將我們自己的formtter注冊到系統(tǒng)中,然后Spring會(huì)自動(dòng)完成文本表示的book和book實(shí)體對象之間的互相轉(zhuǎn)換。由于Formatter是無狀態(tài)的,因此不需要為每個(gè)請求都執(zhí)行注冊formatter的動(dòng)作。

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Spring Boot DevTools使用教程

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

    java中斷線程的正確姿勢完整示例

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

最新評論

黄浦区| 古交市| 原平市| 桂林市| 阿巴嘎旗| 龙岩市| 台山市| 清流县| 珠海市| 达拉特旗| 昌都县| 涪陵区| 虎林市| 盐津县| 得荣县| 荣成市| 铜鼓县| 九江县| 油尖旺区| 湟源县| 宁远县| 米林县| 鄢陵县| 高台县| 邯郸县| 于都县| 宁强县| 抚顺县| 临澧县| 长丰县| 广宁县| 海宁市| 龙岩市| 渭南市| 慈利县| 鹤庆县| 普格县| 富源县| 江口县| 邯郸市| 朝阳县|