侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130555 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

崛起于Springboot2.X + JDK8 Time配置(37)

2023-09-21 星期四 / 0 评论 / 0 点赞 / 26 阅读 / 3027 字

《SpringBoot2.X心法总纲》 (本篇博客已于2019-08-28优化更新) 缘由:jdk7的日期类是java.util.date,java.util.Calendar是非线程安全,所

《SpringBoot2.X心法总纲》

      (本篇博客已于2019-08-28优化更新)

      缘由:jdk7的日期类是java.util.date,java.util.Calendar是非线程安全,所以jdk8提供了一个java.time包,用LocalDateTime、LocalDate代替Date,因此不分公司会用到jdk8新功能,自然就会有人不再使用Date,而是LocalDateTime。

1、pom依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <optional>true</optional></dependency>

2、全局变量配置格式化

@Configurationpublic class LocalDateConfig {    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")    private String pattern;    @Bean    public LocalDateTimeSerializer localDateTimeDeserializer() {        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));    }    @Bean    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {        return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());    }}

3、实体类

@Datapublic class Student {    private LocalDateTime schoolTime;}

4、直接测试

@RestControllerpublic class TestController {    @GetMapping(value ="/test1")    public Student test1(){        LocalDateTime date = LocalDateTime.now();        Student student = new Student();        student.setSchoolTime(LocalDateTime.now());        return student;    }}

5、测试结果

    测试接口:localhost:8080/test1

{"schoolTime":"2018-10-08 17:29:57"}

6、局部变量

    上面是一种全局变量设置,如果我们只是局部变量的格式化的话,那么把配置类删除,然后在Student的那个字段加一个注解就可以了,如下:

@Datapublic class Student {    @JsonFormat(pattern = "yyyy-MM-dd HH")    private LocalDateTime schoolTime;}

7、测试结果

8、总结

    我们并没有删除配置类,但是结果的格式是按照实体类中注解走的,因为实体类的是局部变量,局部变量的优先级高于全局变量!

    时隔一年重新更新优化博客,感概万千,嘻嘻。

广告 广告

评论区