当前位置: 首页 > article >正文

Spring系列注解补充

@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 方法。
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/158400.html

相关文章:

  • 微服务实战系列之Cache(技巧篇)
  • ChatGPT哪些行业需要学习?
  • 数字串最大乘积切分(动态规划)
  • Java分布式系统:了解分布式系统设计和通信协议
  • ReactDomServer 将react组件转化成html静态标签(SSR服务器渲染)
  • 游戏配置表的导入使用
  • windows下DSS界面本地集成linkis管理台
  • 记一次使用Java8新特性中的parallelStream⭐️数据流引发的接口异常以及解决方法
  • 手写promise A+、catch、finally、all、allsettled、any、race
  • 【CTA认证】Android CTA资料及信息安全要求
  • 微信小程序之猜数字和猜拳小游戏
  • Java导出word
  • 为什么游戏公司不太愿意采用“微服务”架构?
  • 【FreeRTOS】消息队列——简介、常用API函数、注意事项、项目实现
  • python中的集合
  • IDEA中,光标移动快捷键(Shift + 滚轮前后滚动:当前文件的横向滚动轴滚动。)
  • 深入理解 Vue 组件:构建优雅的前端应用
  • JAVA代码优化:Token验证处理
  • Isaac Sim教程05 机器人简单组装及传感器
  • 特殊二叉树——堆