SpringCould常用注解
基础知识
dto:主要用于接受前端传过来的对象
vo:封装数据传递给前台
数据层注解
@EqualsAndHashCode:
- 此注解会生成equals(Object other) 和 hashCode()方法。
- 它默认使用非静态,非瞬态的属性
- 可通过参数exclude排除一些属性
- 可通过参数of指定仅使用哪些属性
- 它默认仅使用该类中定义的属性且不调用父类的方法
- 可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。
- @equalsandhashcode(callsuper=false)表达为在对象比较时不会考虑父类中的成员,仅仅比较子类中的属性就判断是否相同
@equalsandhashcode(callsuper=true)在比较时会考虑父类中的成员,通过父类和子类中的属性一起判断是否相同
@NotEmpty
带注解的String,collection,map或数组不能为null,也不能为空。
也就是说,有@NotEmpty注解的String、Collection、Map、数组是不能为null或长度为0
@NotBlank
验证注释的String不是null或空的,与@NotEmpty的区别在于,尾部空格被忽略,也就是说,纯空格的String也是不符合规则的,此注解只能用于验证String类型
@NotNull
带注释的元素不能为null。接受任何类型。完美!
@Accessors
Accessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果,下面介绍三个属性
- fluent :fluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。
@Data
@Accessors(fluent = true)
public class User {
private Long id;
private String name;
// 生成的getter和setter方法如下,方法体略
public Long id() {}
public User id(Long id) {}
public String name() {}
public User name(String name) {}
}
- chain:chain的中文含义是链式的,设置为true,则setter方法返回当前对象。
@Data
@Accessors(chain = true)
public class User {
private Long id;
private String name;
// 生成的setter方法如下,方法体略
public User setId(Long id) {}
public User setName(String name) {}
}
- prefix:prefix的中文含义是前缀,用于生成getter和setter方法的字段名会忽视指定前缀(遵守驼峰命名)
@Data
@Accessors(prefix = "p")
class User {
private Long pId;
private String pName;
// 生成的getter和setter方法如下,方法体略
public Long getId() {}
public void setId(Long id) {}
public String getName() {}
public void setName(String name) {}
}
@JsonFormat
-
shap: 表示序列化后的一种类型
@JsonFormat(shape = JsonFormat.Shape.STRING):向前端传递的时候会自动转换为字符串类型 -
pattern: 表示日期的格式
-
timezone: 默认是GMT,中国需要GMT+8
-
locale: 根据位置序列化的一种格式
其他注解
@FeignClient
服务之间的相互调用
@Valid
限制 | 说明 |
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
**@Future | ** 限制必须是一个将来的日期 |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式 |
@Size(max,min) | 限制字符长度必须在min到max之间 |
@Past | 验证注解的元素值(日期类型)比当前时间早 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
Controller层注解
@RequestMapping
在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求
RequestMapping注解有六个属性,下面我们把她分成三类进行说明。
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、 params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
@PathVariable
可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
@RequestParam
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
@Component
- @Controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层 - @Service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理 - @Repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件 - @Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@Configuration
- @Configuration不可以是final类型;
- @Configuration不可以是匿名类;
- 嵌套的configuration必须是静态类。
@Bean
@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。
bean的描述:bean的描述可以使用 @Description来提供
bean的命名支持别名:可以使用name属性来描述。
@Sl4j
必须先加载Lombok依赖和安装lombok插件
使用log.方法名来输出日志
@RestController
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
swagger注释API
@EnableSwagger2
使用swagger的前提条件,是swagger的一个配置类上面的注解。
基础Api
作用范围 | API | 使用位置 |
---|---|---|
对象属性 | @ApiModelProperty | 用在出入参数对象的字段上 |
协议集描述 – | @Api | 用于controller类上 |
协议描述 – | @ApiOperation | 用在controller的方法上 |
Response集 – | @ApiResponses | 用在controller的方法上 |
Response – | @ApiResponse | 用在 @ApiResponses里边 |
非对象参数集– | @ApiImplicitParams | 用在controller的方法上 |
非对象参数描述 | @ApiImplicitParam | 用在@ApiImplicitParams的方法里边 |
描述返回对象的意义 | @ApiModel | 用在返回对象类上 |
@ApiImplicitParam
属性 | 取值 | 作用 |
---|---|---|
paramType | 查询参数类型 | |
path | 以地址的形式提交数据 | |
query | 直接跟参数完成自动映射赋值 | |
body | 以流的形式提交 仅支持POST | |
header | 参数在request headers 里边提交 | |
form | 以form表单的形式提交 仅支持POST | |
dataType | 参数的数据类型 只作为标志说明,并没有实际验证 | |
Long | ||
String | ||
name | ||
value | ||
required | 参数是否必填 | |
true | 必填 | |
false | 非必填 | |
defaultValue | 默认值 |
@ApiModelProperty()
用于方法,字段; 表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
数据库相关注解
@TableName
表名注解
@TableId
@TableId 主键注解
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
value | string | “” | 主键字段名 |
type | Enum | IdType.NONE | 主键类型 |
类型:
值 | 描述 |
---|---|
Auto | 数据库自增 |
Input | 自行输入 |
ID_Worker | 分布式全局唯一ID 长整型类型 |
UUID | 32位UUID字符串 |
NONE | 无状态 |
ID_WORKER_STR | 分布式全局唯一ID 字符串类型 |
@TableField
字段处理操作注解
值 | 描述 |
---|---|
value | 字段名 |
update | 预处理色图字段注入 |
condition | 预处理where实体条件 |
el | 详细注释说明 |
exist | 是否为数据库字段 |
strategy | 字段验证 |
fill | 字段填充标记 |
字段填充策略 FieldFill
值 | 描述 |
---|---|
DEFAULT | 默认不处理 |
INSERT | 插入填充字段 |
UPDATE | 更新填充字段 |
INSERT_UPDATE | 插入和更新时填充字段 |