From a3187e02a0e030f3d4e7e9a11650dfc7af8590b5 Mon Sep 17 00:00:00 2001 From: huifer Date: Mon, 12 Oct 2020 13:16:09 +0800 Subject: [PATCH 1/2] doc: format --- ...ateTimeFormatAnnotationFormatterFactory.md | 63 +++++++++++++++++++ .../format/Parser/Spring-DateTimeParser.md | 29 +++++++++ .../Spring-MillisecondInstantPrinter.md | 28 +++++++++ .../Spring-AnnotationFormatterFactory.md | 42 +++++++++++++ docs/Spring/clazz/format/Spring-Formatter.md | 11 ++++ docs/Spring/clazz/format/Spring-Parser.md | 27 ++++++++ docs/Spring/clazz/format/Spring-Printer.md | 20 ++++++ 7 files changed, 220 insertions(+) create mode 100644 docs/Spring/clazz/format/AnnotationFormatterFactory/Spring-DateTimeFormatAnnotationFormatterFactory.md create mode 100644 docs/Spring/clazz/format/Parser/Spring-DateTimeParser.md create mode 100644 docs/Spring/clazz/format/Printer/Spring-MillisecondInstantPrinter.md create mode 100644 docs/Spring/clazz/format/Spring-AnnotationFormatterFactory.md create mode 100644 docs/Spring/clazz/format/Spring-Formatter.md create mode 100644 docs/Spring/clazz/format/Spring-Parser.md create mode 100644 docs/Spring/clazz/format/Spring-Printer.md diff --git a/docs/Spring/clazz/format/AnnotationFormatterFactory/Spring-DateTimeFormatAnnotationFormatterFactory.md b/docs/Spring/clazz/format/AnnotationFormatterFactory/Spring-DateTimeFormatAnnotationFormatterFactory.md new file mode 100644 index 0000000..9c57907 --- /dev/null +++ b/docs/Spring/clazz/format/AnnotationFormatterFactory/Spring-DateTimeFormatAnnotationFormatterFactory.md @@ -0,0 +1,63 @@ +# Spring DateTimeFormatAnnotationFormatterFactory + +- 类全路径: `org.springframework.format.datetime.DateTimeFormatAnnotationFormatterFactory` + +- 类图 +![EmbeddedValueResolutionSupport](/images/spring/DateTimeFormatAnnotationFormatterFactory.png) + + +```java +public class DateTimeFormatAnnotationFormatterFactory extends EmbeddedValueResolutionSupport + implements AnnotationFormatterFactory { + + /** + * 字段类型 + */ + private static final Set> FIELD_TYPES; + + @Override + public Set> getFieldTypes() { + return FIELD_TYPES; + } + + @Override + public Printer getPrinter(DateTimeFormat annotation, Class fieldType) { + return getFormatter(annotation, fieldType); + } + + @Override + public Parser getParser(DateTimeFormat annotation, Class fieldType) { + return getFormatter(annotation, fieldType); + } + + protected Formatter getFormatter(DateTimeFormat annotation, Class fieldType) { + DateFormatter formatter = new DateFormatter(); + // style + String style = resolveEmbeddedValue(annotation.style()); + // 判断时间格式是否村子啊 + if (StringUtils.hasLength(style)) { + formatter.setStylePattern(style); + } + // iso 设置 + formatter.setIso(annotation.iso()); + // date time pattern + String pattern = resolveEmbeddedValue(annotation.pattern()); + // 设置 + if (StringUtils.hasLength(pattern)) { + formatter.setPattern(pattern); + } + return formatter; + } + + static { + Set> fieldTypes = new HashSet<>(4); + // 加入字段类型 + fieldTypes.add(Date.class); + fieldTypes.add(Calendar.class); + fieldTypes.add(Long.class); + FIELD_TYPES = Collections.unmodifiableSet(fieldTypes); + } + +} + +``` \ No newline at end of file diff --git a/docs/Spring/clazz/format/Parser/Spring-DateTimeParser.md b/docs/Spring/clazz/format/Parser/Spring-DateTimeParser.md new file mode 100644 index 0000000..ecca6f3 --- /dev/null +++ b/docs/Spring/clazz/format/Parser/Spring-DateTimeParser.md @@ -0,0 +1,29 @@ +# Spring DateTimeParser +- 类全路径: `org.springframework.format.datetime.joda.DateTimeParser` + +- 代码如下 + +```java +public final class DateTimeParser implements Parser { + + private final DateTimeFormatter formatter; + + + /** + * Create a new DateTimeParser. + * @param formatter the Joda DateTimeFormatter instance + */ + public DateTimeParser(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + + @Override + public DateTime parse(String text, Locale locale) throws ParseException { + // DateTimeFormatter 转换字符串事件类型 + return JodaTimeContextHolder.getFormatter(this.formatter, locale).parseDateTime(text); + } + +} + +``` \ No newline at end of file diff --git a/docs/Spring/clazz/format/Printer/Spring-MillisecondInstantPrinter.md b/docs/Spring/clazz/format/Printer/Spring-MillisecondInstantPrinter.md new file mode 100644 index 0000000..36abd96 --- /dev/null +++ b/docs/Spring/clazz/format/Printer/Spring-MillisecondInstantPrinter.md @@ -0,0 +1,28 @@ +# Spring MillisecondInstantPrinter +- 类全路径: `org.springframework.format.datetime.joda.MillisecondInstantPrinter` + + +```java +public final class MillisecondInstantPrinter implements Printer { + + private final DateTimeFormatter formatter; + + + /** + * Create a new ReadableInstantPrinter. + * @param formatter the Joda DateTimeFormatter instance + */ + public MillisecondInstantPrinter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + + @Override + public String print(Long instant, Locale locale) { + // DateTimeFormatter .print + return JodaTimeContextHolder.getFormatter(this.formatter, locale).print(instant); + } + +} + +``` \ No newline at end of file diff --git a/docs/Spring/clazz/format/Spring-AnnotationFormatterFactory.md b/docs/Spring/clazz/format/Spring-AnnotationFormatterFactory.md new file mode 100644 index 0000000..6bef88e --- /dev/null +++ b/docs/Spring/clazz/format/Spring-AnnotationFormatterFactory.md @@ -0,0 +1,42 @@ +# Spring AnnotationFormatterFactory + +- 类全路径: `org.springframework.format.AnnotationFormatterFactory` + + +```java + +public interface AnnotationFormatterFactory { + + /** + * The types of fields that may be annotated with the <A> annotation. + * 字段类型 + */ + Set> getFieldTypes(); + + /** + * Get the Printer to print the value of a field of {@code fieldType} annotated with + * {@code annotation}. + *

If the type T the printer accepts is not assignable to {@code fieldType}, a + * coercion from {@code fieldType} to T will be attempted before the Printer is invoked. + * 通过注解和字段类型获取输出接口 + * @param annotation the annotation instance + * @param fieldType the type of field that was annotated + * @return the printer + */ + Printer getPrinter(A annotation, Class fieldType); + + /** + * Get the Parser to parse a submitted value for a field of {@code fieldType} + * annotated with {@code annotation}. + *

If the object the parser returns is not assignable to {@code fieldType}, + * a coercion to {@code fieldType} will be attempted before the field is set. + * 通过注解和字段类型获取解析接口 + * @param annotation the annotation instance + * @param fieldType the type of field that was annotated + * @return the parser + */ + Parser getParser(A annotation, Class fieldType); + +} + +``` \ No newline at end of file diff --git a/docs/Spring/clazz/format/Spring-Formatter.md b/docs/Spring/clazz/format/Spring-Formatter.md new file mode 100644 index 0000000..e3979e8 --- /dev/null +++ b/docs/Spring/clazz/format/Spring-Formatter.md @@ -0,0 +1,11 @@ +# Spring Formatter +- 类全路径: `org.springframework.format.Formatter` + +```java +public interface Formatter extends Printer, Parser { + +} +``` + +- 该接口继承了 printer 和 parser 两个接口. +- 比较常见的有: `DateFormatter` 就是继承这个接口. \ No newline at end of file diff --git a/docs/Spring/clazz/format/Spring-Parser.md b/docs/Spring/clazz/format/Spring-Parser.md new file mode 100644 index 0000000..7762c4f --- /dev/null +++ b/docs/Spring/clazz/format/Spring-Parser.md @@ -0,0 +1,27 @@ +# Spring Parser + +- 类全路径: `org.springframework.format.Parser` +- 类作用: 字符串准换成java对象 + +```java + +@FunctionalInterface +public interface Parser { + + /** + * Parse a text String to produce a T. + * 将字符串转换成对象 + * @param text the text string + * @param locale the current user locale + * @return an instance of T + * @throws ParseException when a parse exception occurs in a java.text parsing library + * @throws IllegalArgumentException when a parse exception occurs + */ + T parse(String text, Locale locale) throws ParseException; + +} +``` + +- 类图 + +![Parser](/images/spring/Parser.png) \ No newline at end of file diff --git a/docs/Spring/clazz/format/Spring-Printer.md b/docs/Spring/clazz/format/Spring-Printer.md new file mode 100644 index 0000000..66e3feb --- /dev/null +++ b/docs/Spring/clazz/format/Spring-Printer.md @@ -0,0 +1,20 @@ +# Spring Printer +- 类全路径: `org.springframework.format.Printer` +- 类作用: 对象转换成字符串 + + +```java +@FunctionalInterface +public interface Printer { + + /** + * Print the object of type T for display. + * 打印对象 + * @param object the instance to print + * @param locale the current user locale + * @return the printed text string + */ + String print(T object, Locale locale); + +} +``` \ No newline at end of file From 814e24a7c2cef0c70fab56572a2aab38370eb5c9 Mon Sep 17 00:00:00 2001 From: huifer Date: Mon, 12 Oct 2020 13:18:26 +0800 Subject: [PATCH 2/2] doc: update readme --- README.md | 7 +++++++ ...DateTimeFormatAnnotationFormatterFactory.png | Bin 0 -> 21614 bytes images/spring/Parser.png | Bin 0 -> 42432 bytes 3 files changed, 7 insertions(+) create mode 100644 images/spring/DateTimeFormatAnnotationFormatterFactory.png create mode 100644 images/spring/Parser.png diff --git a/README.md b/README.md index 02b8672..f600d40 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,13 @@ * [Spring PropertySource](/docs/Spring/clazz/PropertySource) * [Spring PlaceholderResolver](/docs/Spring/clazz/PlaceholderResolver) +* [Spring-AnnotationFormatterFactory](/docs/Spring/clazz/format/Spring-AnnotationFormatterFactory.md) +* [Spring-Formatter](/docs/Spring/clazz/format/Spring-Formatter.md) +* [Spring-Parser](/docs/Spring/clazz/format/Spring-Parser.md) +* [Spring-Printer](/docs/Spring/clazz/format/Spring-Printer.md) + + + ### Spring5 新特性 diff --git a/images/spring/DateTimeFormatAnnotationFormatterFactory.png b/images/spring/DateTimeFormatAnnotationFormatterFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..e34488e89c4c5f5bebe457ca033fcfe9ba165b40 GIT binary patch literal 21614 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 literal 0 HcmV?d00001