• internship:术语了解及着手写接口


    多线程和高并发:多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。主要发生在web系统集中大量访问或者socket端口集中性收到大量请求
    多线程只是解决高并发的方法之一。

    接触项目代码之后 才认识到之前所接触的MVC具体内容——经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。 也就是module业务模型的具体内容。

    @Api里的属性tags 主要是依据api文档,tags表示业务总功能描述,如同list集合,该总功能下涵盖多个功能模块,对等理解就是 总功能即为类 多个功能模块就是对应的方法。

    基于整体项目代码的了解、熟悉。明白每一个类的创建是基于数据库表结构(字段、数据类型等等)并且extends model< T >。
    除此以外,需要熟悉的注解内容有——
    @Data(自不用多介绍 使用很多次)

    @ApiOperationSupport
    使用ApiOperationSupport的前提是需要先把swagger2配置好后再使用以下方法,用在controller层上,为控制类排序。

    @EqualsAndHashCode(callSuper = true)
    此注解会生成equals(Object other) 和 hashCode()方法。一般设置为callSuper=true(除非是判断两者对象是否一致)
    它默认使用非静态,非瞬态的属性
    可通过参数exclude排除一些属性
    可通过参数of指定仅使用哪些属性
    它默认仅使用该类中定义的属性且不调用父类的方法

    @ApiParam(name = “username”, value = “用户名”, required = true)
    参数required表示 该参数是否必填。

    @Accessors(chain = true)
    Accessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果
    chain的中文含义是链式的,设置为true,则setter方法返回当前对象

    @ApiModel(value="BizExitInfo对象", description="")
    
    • 1

    使用场景
    在实体类上边使用,标记类时swagger的解析类

    @ApiModelProperty
    
    • 1

    使用场景
    使用在被 @ApiModel 注解的模型类的属性上
    概述
    添加和操作模型属性的数据

    @ApiModelProperty(value = "名称")//说明
    @TableField("name")//对应表结构字段名
    
    • 1
    • 2

    置于属性上

    除以上实体类是基于每一个表而创建,那么在api文档里的响应参数 需要单独建立model 在写接口时便于调用。

    接口一般return ResponseData类 ,需要返回数据。
    其次在一般登录验证方面利用apache的安全框架shiro,实现用户身份认证、权限授权、加密、会话管理等功能。

    逐渐明白接口的注解在干些什么,其实就是在为api文档布局罢了。比如@ApiSort为接口排序,再则接口是为前端提供的,那么接口的生成是在其他创建完成(比如 service层 、dao层、pojo和配置文件等等)的基础上,因此在写接口的时候会发现 代码的简略和注解繁多。利用MyBatis-Plus之后大多数会创建的类会去继承MyBatis-Plus已有的。

    package com.hyd.daring.api;
    
    import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
    import com.hyd.daring.common.response.ResponseData;
    import com.hyd.daring.service.IBizAttendanceRecordService;
    import com.hyd.daring.transfer.app.AttendanceIndexModel;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.annotations.ApiParam;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.ibatis.annotations.ResultMap;
    import org.springframework.format.annotation.DateTimeFormat;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    import java.time.YearMonth;
    
    /**
     *月花销接口Demo
     *
     * @author yyp
     */
    @RestController
    @RequestMapping("/MonthPay")
    @Api( tags ="月销接口")
    @Slf4j
    public class DemoApi {
    
        @Resource
        private IBizAttendanceRecordService iBizAttendanceRecordService;
    
        /**
         *
         * 月销—首页(本月花销情况)
         *
         */
        @RequestMapping(value = "/thisYear/index")
        @ApiOperation(value = "今年本月的花销")
        @ApiOperationSupport(order = 1)
        public ResponseData<AttendanceIndexModel> attendanceIndex(
                @ApiParam(name="yearId",value="第几年",required=true) Integer yearId )
        {
            return new ResponseData<>(iBizAttendanceRecordService.attendanceIndex(yearId));
        }
    
    
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
  • 相关阅读:
    SpringCloud 分布式锁与分布式事务
    Java 常用Set集合和常用Map集合
    【ASE入门学习】ASE入门系列二十——flowmap
    前端笔试练习题——JS7 无重复数组、JS8 数组排序
    01-从JDK源码级别剖析JVM类加载机制
    组件安全概述
    coturn 在云服务器上安装配置和运行
    第一章《补基础:不怕学不懂微积分》笔记
    11.10论文写作与格式
    C++求最大公因数(gcd)的六重境界
  • 原文地址:https://blog.csdn.net/yooppa/article/details/125497438