在写代码之前,作为一个程序员,应该对自己使用的框架有比较深入的了解,包括但不限于组件注册原理、注册顺序、工作方式、底层实现逻辑以及不同框架版本对于其他组件的影响。前期工作做的充分才不会导致后期在添加功能时因为不可预知的BUG增加工作负担。
举一个比较典型的例子就是JAVA中各类常用ORM框架各版本对于JSR310时间规范的问题,这里面的雷容易踩也容易爆。我在几年前写过一个内部员工优惠的项目,使用的框架是spring 4.2.4,ORM框架使用当时刚刚接触不久心醉神迷的JPA,JDK版本使用的JAVA8。当时看完DEMO就踌躇满志的动手了,当时我在某一个实体类中定义这么一行人畜无害的变量:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
按照我配置的序列化策略,JPA框架会在数据库中创建一个实体类的表,其中必然包含着某个名为"createTime"或"create_time"的列,里面保存着时间信息,对吗?
大概在项目正式运行几年后,由于新财年优惠策略变动,我在不久之前重新启动了这个项目,并根据过去的维护状况,在不修改原有数据的情况下,把该项目使用的框架升级成spring boot 2.X + spring boot jpa。一番修修补补技术升级之后,这个实体类中这个属性的注解变成了这个样子: