Spring 注解

本文最后更新于:2024年9月8日 晚上

Spring 注解

@DateTimeFormat

  • 规定接收的时间格式,格式化前端传递给后端的日期数据(非JSON)

注解在实体类的属性上

  • 用于接口接收的对象中包括Date类型的属性。
1
2
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date symstarttime;

注解在接口参数中

  • 用于直接接收Date对象。
1
2
3
4
5
@GetMapping("/date")
public String datest(@DateTimeFormat(pattern = "yyyy/MM/dd") Date date){
System.out.println(date);
return "test";
}

注意:Spring转Json的默认实现Jackson中会根据时区去转换时间,而Jackson的默认时区与国内相差8小时,所以需要修改Jackson的默认时区。

  • 解决方案:在application.properties配置文件增加以下配置。
1
2
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

@Conditional

  • 自动配置类必须在一定的条件下才能生效,需要用到@Conditional派生注解进行限制。
  • 作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置类里面的所有内容才生效。
注解 作用
@ConditionalOnBean 当上下文中有指定Bean的条件下进行实例化
@ConditionalOnMissingBean 当上下文没有指定Bean的条件下进行实例化
@ConditionalOnClass 当classpath类路径下有指定类的条件下进行实例化
@ConditionalOnMissingClass 当类路径下没有指定类的条件下进行实例化
@ConditionalOnWebApplication 当项目本身是一个Web项目时进行实例化
@ConditionalOnNotWebApplication 当项目本身不是一个Web项目时进行实例化
@ConditionalOnProperty 当指定的属性有指定的值时进行实例化
@ConditionalOnExpression 基于SpEL表达式的条件判断
@ConditionalOnJava 当JVM版本为指定的版本范围时进行实例化
@ConditionalOnResource 当类路径下有指定的资源时进行实例化
@ConditionalOnJndi 在JNDI存在时触发实例化
@ConditionalOnSingleCandidate 当指定的Bean在容器中只有一个,或者有多个但是指定了首选的Bean时触发实例化
  • 可以通过启用 debug=true属性,来让控制台打印自动配置报告,这样我们就可以很方便的知道哪些自动配置类生效。
1
2
#开启Spring Boot的调试类
debug=true
  • Positive matches:自动配置类启用的(正匹配)
  • Negative matches:没有启动,没有匹配成功的自动配置类(负匹配)
  • Unconditional classes:没有条件的类。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!