首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

Spring Boot实战之定制type Formatters

2020-01-03

本文首发于个人网站: Spring Boot实战之定制type Formatters

前面咱们 有篇文章 介绍了PropertyEditors,是用来将文本类型转化成指定的Java类型,不过,考虑到 PropertyEditor 的无状况和非线程安全特性,Spring 3增加了一个 Formatter 接口来代替它。Formatters供给和PropertyEditor相似的功用,可是供给线程安全特性,也能够完结字符串和方针类型的相互转化。

假设在咱们的程序中,需求依据一本书的ISBN字符串得到对应的book方针。经过这个类型格式化东西,咱们能够在控制器的办法签名中界说Book参数,而URL参数只需求包括ISBN号和数据库ID。

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 {
 this.repository = repository;
 @Override
 public Book parse throws ParseException {
 Book book = repository.findBookByIsbn;
 return book != null ? book : repository.findOne);
 @Override
 public String print {
 return book.getIsbn;
}
@Autowired
private BookRepository bookRepository;
@Override
public void addFormatters {
 registry.addFormatter);
}
@RequestMapping
public List Reviewer getReviewers Book book) {
 return book.getReviewers;
}
mvn spring-boot:run
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 东西的方针是供给跟PropertyEditor相似的功用。经过FormatterRegistry将咱们自己的formtter注册到体系中,然后Spring会主动完结文本表明的book和book实体方针之间的相互转化。由于Formatter是无状况的,因而不需求为每个恳求都履行注册formatter的动作。

运用主张:假如需求通用类型的转化——例如String或Boolean,最好运用PropertyEditor完结,由于这种需求或许不是大局需求的,仅仅某个Controller的定制功用需求。

咱们在WebConfiguration中引进了 BookRepository ,Spring给配置文件供给了运用其他bean方针的才能。Spring自身会保证BookRepository先创立,然后在WebConfiguration类的创立过程中引进。

热门文章

随机推荐

推荐文章