@RestController返回的date类型为什么是Long型

最近项目中发现一个好玩的事情:本地调试时,返回的date是日期格式yyyy-MM-dd HH:mm:ss,但发布到服务器后就变为Long型的时间戳了

原因很简单,服务器启动时的脚本加下如下的spring配置,而本地没有

java -Djava.security.egd=file:/dev/urandom -Dspring.jackson.serialization.write-dates-as-timestamps=true -jar -Xms2048m -Xmx2048m xxx.jar

就是因为加了这个spring参数,才会使date类型都转变为Long型,除了代码中加如下注解的Date型

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date getCreateDate() {
  return createDate;
}

当然,本地如果也想返回Long型时间戳,可以在yml中加上如下配置

spring.jackson.serialization.write-dates-as-timestamps: true

但在调查过程中把Spring的一些地方给了解了一遍,总结如下几点

1. 有关注解@RestController

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

    /**
     * The value may indicate a suggestion for a logical component name,
     * to be turned into a Spring bean in case of an autodetected component.
     * @return the suggested component name, if any
     * @since 4.0.1
     */
    String value() default "";

}

  回顾下这些常用的注解

  1)元注解

@Document:是否编入Javadoc
@Target:使用范围(TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、PACKAGE等)
@Retention:保留范围(SOURCE、CLASS、RUNTIME)
@Inherited:子类继承父类的注解

  2)常用注解

1. Autowired和Qualifier:后者可以根据名称寻找依赖(常用于对同class的多个bean)
2. 别称:类似Controller、Service实质都是Component
3. RestController = Controller + ResponseBody
。。。

。。。待续 

 参考:https://www.jianshu.com/p/e9329c8a59c2

2. 

猜你喜欢

转载自www.cnblogs.com/roostinghawk/p/12080705.html
今日推荐