@JsonProperty
@JsonProperty 是jackson-databindjar包提供的注解,用于实体类的属性上,功能是把属性名称转换为另一个名称(即 两个名称都指向同一个变量值)
该注解主要用于实体类的属性上,作用可以简单的理解为在反序列化的时候给属性重命名(多一个名字来识别)
详情可参考@JsonProperty
@JsonProperty注解代码
@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonProperty
{
/**
* 默认值
*/
public final static String USE_DEFAULT_NAME = "";
/**
* 默认序号
*/
public final static int INDEX_UNKNOWN = -1;
/**
* 逻辑名称值
*/
String value() default USE_DEFAULT_NAME;
/**
* 命令格式,可使用xml等
*/
String namespace() default "";
/**
* 是否必须,默认否
*/
boolean required() default false;
/**
* 序号
*/
int index() default INDEX_UNKNOWN;
/**
* 默认值
*/
String defaultValue() default "";
/**
* 可选属性变量
*/
Access access() default Access.AUTO;
/**
* 属性可选变量
*/
public enum Access
{
/**
* 自动
*/
AUTO,
/**
* 只读模式,即序列化
*/
READ_ONLY,
/**
* 只写模式,即反序列化
*/
WRITE_ONLY,
/**
* 读写模式,即序列化和反序列化都可以
*/
READ_WRITE
;
}
}
@Scheduled
SpringBoot自带的定时任务注解,可以通过注解配置快速实现方法的定时调度,直接在方法上加@Scheduled注解即可。
注解参数
1.cron参数
这个参数是最经常使用的参数,表示接收一个cron参数,cron它是一个表达式,最多接收7个参数,从左到右分别表示:秒 分 时 天 月 周 年;参数以空格隔开,其中年不是必须参数,可以省略。
注意: 使用时需要在类上添加注解@EnableScheduling,表示开启定时任务
cron参数的意义:
常用通配符:
*:表示所有值 比如用在日 表示每一天。
?:表示不指定值 比如周配置 表示不指定星期几执行。
/:表示递增触发 比如 用在分 5/20 从第五分钟开始 每增加20分钟执行一次。
-:表示区间 比如用在 1-6 表示一月到六月执行。
2.zone参数
zone能够指定获取的时区,默认是空,表示使用服务器所在时区,比如Asia/BeiJingi或者Asia/Shanghai。
3.fixedDelay
fixedDelay表示上次调用结束后与下次调用之间的固定时间,单位是毫秒。
注意
@Scheduled使用时,是在本机进行任务调度,但是目前几乎所有的应用为了增加发负载量,都是使用多机部署。这就导致了一个非常严重的分布式问题:在每一台机器上都会在同时执行定时调度任务,可能产生很多重复数据或者导致系统出现其他的业务逻辑BUG,所以在使用@Scheduled进行任务调度时,一定要配合redis的分布式锁来使用,让定时调度任务只在一台机器上执行,避免BUG出现。
@AllArgsConstructor
@AllArgsConstructor生成该类下全部属性的构造方法。
在springboot中可以代替@Autowired注解的使用
@Builder
用来生成对象,并可以为对象链式赋值
@Accessors
有三个属性:
fluent:不写默认为fasle,当该值为true时,对应字段的getter方法前面就没有get,setter方法前面就不会有set
chain:不写默认为fasle,当该值为true时,对应字段调用setter方法后会返回当前对象
prefix:该属性是一个字符串数组,当该数组有值时,表示忽略字段中对应的前缀,生成对应的 getter 和 setter 方法。