实习刚进公司,拿到项目代码之后,惊叹一声"What?"。发现自己什么也看不懂,那就先从注解开始学习吧!
@EqualsAndHashCode:
默认callSuper = false
callSuper = true 在子类编译后的equals()方法多了if(!super.equals(o)){return false;}的判断。也就是根据子类本身的字段值和从父类继承的字段值一同生成hashcode。callSuper = false只根据子类本身的字段值生成hashcode。当比较时,子类对象本身的字段值相同,即使父类字段值不同也返回true
@JsonSerialize:
using = ToStringSerializer.class,可以自定义需要转化的类
该注解用于getter()方法上,根据被注解字段的数据去对应转换类中找到匹配的值输出
@JsonFormat:
timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss"
由于从数据库中的日期是date类型,读取出来封装到实体类时会变成英文时间格式,我们可以添加pattern格式化时间格式
@DateTimeFormat:
pattern = "yyyy-MM-dd HH:mm:ss"
接收前端发来的日期数据,pattern 表示接收数据的精确程度
@TableLogic:
value="原值",delval="改值"
执行BaseMapper的删除方法时执行逻辑删除。
@JsonProperty:
value = "xxx"
当前端发送json数据中的名字与实体类中的名字不同时,该注解能实现配对
@CrossOrigin:
origins = “”,maxAge = 3600
支持跨域,默认都可访问,设置后可访问目标网页
@ControllerAdvice:
定义在类上,类中可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解定义方法,在@RequestMapping中生效。若该类中全部异常处理返回json,可以使用@RestControllerAdvice代替,这样在方法中可以不用添加@ResponseBody
@ModelAttribute:
在mode使用model.addAttribute(“xxx”, xxx)设置值,可以在@RequestMapping注解的方法中,通过ModelMap.get()或是在参数中使用@ModelAttribute(“xxx”)获取
@ExceptionHandler:
不加参数,默认对所有异常进行处理,添加NumberFormatException.class等可以对对应的NumberFormatException异常进行处理。定义多个@ExceptionHandler,spring会选择最近抛出异常的处理方法
@Accessors(chain=true):
生成setter()方法返回this代替了默认返回的void,可以实现链式编程
@PostConstruct:
类初始化顺序:构造方法>@Autowired>@PostConstruct。在初始化Controller对象时若需要使用到被@Autowired注入的对象,没有该注解会得到一个null对象,加入该注解可以在对象注入之后初始化
@Scheduled:
(corn=”0 0 1 * * ?”):表示每天凌晨一点执行一次。其中参数分别表示:秒 分 时 日 月 星期几 年。”*”表示任意值,cron = "0 0 1 * * ?" 的日这个域 表示每天的一点都会执行;”0-5”表示每到该区间内都会执行,cron = "0 0-5 1 * * ?" 的日这个域 表示每天的一点的0-5(前5分钟)范围内每分钟都会执行;”0/5”表示起始时间/间隔时间,cron = "0 0/5 1 * * ?" 的日这个域 表示每天的一点0分执行 然后隔5分钟执行一次 直至2点;”0,5”表示枚举值,cron = "0 0,5 1 * * ?" 的日这个域 表示每天的一点的0分、5分的时候都会执行;”?”只用于天(月)和天(星期),防止冲突
有些了解的就不想记了,太难的又懒得记了,到最后发现只记录几个。就放在这给自己随时查阅算了。