尚硅谷B2C电商毕设微服务项目中所用注释总结

周青的总结记录


前言

上次自己手写spring项目已经过去了很久,本次学习尚硅谷B2C电商毕设项目时遇到很多注释,虽然大概感觉得到他是做什么的,但不能具体地说出他的作用。现在在本文中对遇到的注释进行总结。以及记录因对这些注释不熟悉而在开发中出现的错误。


正文

仅作粗略记录,详解请参考其他文章的具体解读

通用服务 commons

@Data

出现在pojo,param下的实体类中,省去代大量的get()、 set()、 toString()等方法

@TableName

出现在pojo下的实体类中,对应数据库中的表名,实现实体类型和数据库中的表实现映射

@TableId

出现在pojo下的实体类中,加在实体中表示主键的属性上。
作用:用于设置id的生成策略,即设置id是如何生成的
type 设置主键类型,AUTO:数据库自增。
i.e. :

@TableId(type = IdType.AUTO)

@TableField

”对应j数据库属性名“(赵伟风老师原话)
在MP中通过@TableField注解可以指定字段的一些属性,常常解决的问题有两个:
1.对象中的属性名和表中的字段名不一致(非驼峰)
2.对象中的属性字段在表中不存在

@JsonProperty

出现在pojo,param下的实体类中,”对应json格式化名称“(赵伟风老师原话)给属性重命名(多一个名字来识别)
在postman测试中传参数名需要传@JsonProperty中的名称
i.e.
实体类为

    @NotNull
    @JsonProperty("user_id")
    private Integer userId;

则测试的json应为”user_id"而不是"userId"
如果有[nio-3001-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: @NotNull method com/atguigu/param/AddressListParam.getUserId must not return null] with root cause的JSON转换错误可能原因正在于此。

@NotNull

非空校验。一般用于 Integer 类型的基本数据类型

@NotBlank

非空校验。只能用于 String 类型。要和 @valid 一起使用

@Length

一般用在 String 类型上可对字段数值进行最大长度限制的控制
i.e. :

@Length(min = 6)

@JsonInclude()

为实体类序列化返回增加规则。
i.e. @JsonInclude(Include.NON_NULL):当此值不为空时生成json,过滤掉返回值为null的字段,即字段为null不参与序列化。

@FeignClient

@FeignClient声明Feign的客户端,指明服务名称

【Feign是一个http请求调用的轻量级框架,用于完成服务间远程调用及负载均衡】
Feign会通过动态代理,帮我们生成实现类。
注解@FeignClient声明Feign的客户端,指明服务名称
接口定义的方法,采用SpringMVC的注解。Feign会根据注解帮我们生成URL地址
i.e. :

@FeignClient(value = "provider-service")
public interface ConsumerService {
    
    //String url = String.format("http://provider-service/user/findUserById/%s",id);
    @RequestMapping("/user/findUserById/{id}")
    User findUserById(@PathVariable("id") Integer id);
}

@GetMapping

【@RequestMapping作用:将请求和处理请求的控制器方法关联起来,建立映射关系】
在SpringMVC新版本中,@RequestMapping被
@GetMapping
@PostMapping
@PutMapping
等替代。
@GetMapping用于处理请求方法的GET类型

@PathVariable

@PathVariable 映射 URL 绑定的占位符
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。
i.e.见上

@AllArgsConstructor @NoArgsConstructor

出现在pojo下的实体类中,
@AllArgsConstructor 有参构造函数
@NoArgsConstructor 无参构造函数
常与@Bulider连用
如果在测试接口时,postman提示400,后台报错提示.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of com.atguigu.pojo.xxx(although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance ofcom.atguigu.pojo.xxx (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (PushbackInputStream); line: 2, column: 5]]
错因可能为实体类中缺失这个注释。


业务服务 store

@SpringBootApplication

出现在Application启动类中,springboot的核心注释,run整个框架。

@MapperScan

出现在Application启动类中,指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
(比一个个加@Mapper注解更简便)

@RestController

出现在controller下的Controller类中
@RestController = @Controller + @ResponseBody
在一个类上添加@Controller注解,表明了这个类是一个控制器类。
@ResponseBody表示方法的返回值直接以指定的格式写入Http response body中。

@RequestMapping

将请求和处理请求的控制器方法关联起来,建立映射关系。
i.e.:

@Controller
@RequestMapping("/demo")
public class DemoController {
    @RequestMapping("/demo1")
    public String toDemo(){
        return "demo";
    }
}

此时,servlet的路径是http://localhost:端口号/项目名称/demo/demo1

@Autowired

出现在controller下的Controller类,impl类中
注解@Autowired是Spring对组件自动装配的一种方式。常用于在一个组件中引入其他组件。
自动装配:sprng通过依赖注入(DI),完成IOC容器中各个组件依赖的关系赋值。

@PostMapping

出现在controller下的Controller类中
见上文@GetMapping@RequestMapping

@Slf4j

日志输出


  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
本资源为网传资源,为一套比较全的电商项目,系统架构采用SOA dubbo+EasyI实现,资源过大上传乃是下载链接,如有侵权请联系/留言,不多说下面上目录: 1.01 电商系统介绍2 f% Z/ C0 z% {1 l" q+ R 2.02 电商类型介绍6 r6 J' |. a2 F, t6 y; _. v# p2 J# ` 3.03 电商系统演示介绍! D$ C$ a1 K( q, c 4.04 电商数据结构介绍 5.05 电商数据结构设计器8 q9 r1 t3 Q( A# T" ?# P0 w+ n 6.06 电商数据准备 7.07 后台管理框架搭建 8.08 spu管理跳转 9.09 分类下拉列表的加载 10.10 商品发布的业务逻辑 11.1.建表 12.2.导数据 13.3.统一环境 14.4.生成js文件0 ~* z9 y2 K/ u; k+ N8 S# l* H: V! Y 15.01 商品spu参数提交- Q( T& z* U- B, ^: q) _ 16.02 商品spu图片上传服务介绍' ], M1 {0 w- x; Z' L. y 17.03 文件上传 工具 18.04 spu信息发布功能) G' E R g0 B( \* X + N& D7 p 19.05 spu动态图片追加% N0 H) M. o8 ~+ A 20.06 spu动态图片追加 21.07 属性功能管理介绍 22.08 属性功能管理介绍 23.09 属性保存功能跳转 24.10 属性双重集合参数3 Z4 [5 |4 D, k, M- G 25.11 属性保存功能业务层代码3 E: v6 D1 y: N* t5 X& Q, | 26.12 属性能业异步内嵌页8 t- |* |7 r# @ 27.13 属性集合查询) q& ~/ W) _9 c* r+ d: D5 Z% Y 28.01 属性的双重集合查询语句 29.02 sku功能介绍! m- K+ b0 K7 U* B! o* g3 S 30.03 sku功能跳转 31.04 客户端js函数的el表达式 32.05 异步加载spu列表数据# M& R, \7 \3 y z- w+ a% }( g" ^ 33.06 用复选框操作属性列表显示 D+ k( T; J. J" `2 u 34.07 属性参数的提交) O0 o, s0 X \! P! @0 b& H 35.08 sku的数据结构说明8 m! S+ i9 k) W4 F# ?7 U 36.09 sku添加的业务实现1 |' b G% [! w/ J* C n; N 37.10 easyui的介绍 38.11 easyui的layout初始化介绍- v- C+ z# J) e- O* I! G 39.12 easyui手风琴控件介绍1 X/ X# \' k% x2 N 40.13 tree控件 41.14 tab控件: U, |: a! S7 ?: A$ t1 ?, G 42.1.properties% C2 @ d! }9 Z& ^2 c 43.2.主键9 D3 f9 W4 J* C" B4 M 44.3. 锚点. F( v2 C8 q- I# F+ G 45.01 数据表格的用法: e: S' z. T0 @8 T( `6 L 46.02 combobox的用法; _6 }2 p3 v: O7 l* } 47.03 嵌套布局的用法% L! U! L0 ]% B 48.04 easyui同步提交后跳转问题 49.05 乱码问题! {6 |( X* i) u; w! Y' B 50.06 首页初始化 51.07 用户登录方法 k, `) e/ R( F& m5 X 52.08 通过cookie取得用户的个性化信息, J7 ?0 ]' A) \6 E7 n5 K 53.09 通过客户端cookie取得用户的个性化信息0 i7 ], O/ }# H: t6 @: j) I+ i 54.10 用户个性化信息9 b% h5 O% p; I" P7 z 55.11 任务总结 56.01 商品检索介绍 57.02 商品分类检索介绍7 J% Q6 L& r: T6 N. H8 a- E6 Y% f" d" S4 I 58.03 商品分类检索sql: Z- N/ w: k; }2 b9 E( w8 I 59.04 商品分类检索列表 60.05 商品属性检索介绍 61.06 ajax字符串数组传参 62.07 ajax字符串json传参& i' g9 \7 ^! e7 _ 63.08 表单序列化传参 64.09 动态sql的设计方法" o# D. ?# R% _1 X 65.10 动态sql的实现 66.11 任务 67.1.项目演示 68.2.resu

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值