type
status
date
slug
summary
tags
category
icon
password
URL
@Component(把普通pojo实例化到spring容器(组件)中,相当于配置文件中的 )——pojo下
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。
在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。——@Component不推荐使用。
- @RestController (就不用跳视图了—不用页面的跳转时候使用)
RequestMapping(“/index”)【用于标注控制层,相当于struts中的action层,页面的跳转时候使用】
@GetMapping(用于处理请求方法的GET类型)
@ PostMapping(用于处理请求方法的POST类型等。)
- 用于标注服务层,主要用来进行业务的逻辑处理
- 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
- 缺点,这样每个都要进行赋值,很麻烦_——所以一般用yaml
- 通过 @Autowired的使用来消除 set ,get方法。
JSR303数据校验:这个就是我们可以在字段是增加一层过滤器验证,可以保证数据的合法性
@Bean(明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且**交给Spring容器管理**;)
@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。
- 因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了
@ResponseBody(作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。)
- 注:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
@PathVariable(“id”)——(不加这个注解,前端传入的数值将接收不到)
- 自定义获取当前登录用户的注解
@Resource 由jdk提供
@Autowired 由spring提供
@Autowired//默认按type注入
@Qualifier(“cusInfoService”)//一般作为@Autowired()的修饰用,@Qualifier限定哪个bean应该被自动注入
@Resource(name=“cusInfoService”)//默认按name注入,可以通过name和type属性进行选择性注入
一般@Autowired和@Qualifier一起用,@Resource单独用。
——————————————————实体类entity中出现的注解
@Column注解用来标识实体类中属性与数据表中字段的对应关系
(2)@Column属性详解:
name
定义了被标注字段在数据库表中所对应字段的名称;
unique
表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table标记中的@UniqueConstraint。
nullable
表示该字段是否可以为null值,默认为true。
insertable
表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。
updatable
表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。
columnDefinition(大多数情况,几乎不用)
表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。(也就是说,如果DB中表已经建好,该属性没有必要使用。)
table
表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。
length
表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。
precision和scale
precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。
在swagger中@ApiModelProperty()注解一般用于方法,属性的说明,常用属性如下:
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
前端传过来数据的时候,要进行校验,但是大量的校验很繁琐,会造成大量的if else语句的产生,所以@Valid和@Validated很好的解决了这个问题.
- Validated分组验证
- @Validated的使用
1.@NotNull:不能为null,但可以为空字符串
2.@NotEmpty:不能为null,并且长度必须大于0
3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
转载于:https://www.cnblogs.com/thinkjava/p/7073599.html
@Min 验证 Number 和 String 对象是否大等于指定的值
@Max 验证 Number 和 String 对象是否小等于指定的值
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) 验证字符串长度是否在给定的范围之内
max和min是对你填的“数字”是否大于或小于指定值,这个“数字”可以是number或者string类型
字符串长度限制用length。
————————————————实体类
版权声明:本文为CSDN博主「渡人既是渡己」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kylin_tam/article/details/116276610
入参格式化
- 这时,就可以使用 Spring 的 @DateTimeFormat 注解格式化参数
- @DateTimeFormat
- 主要解决前端时间控件传值到后台接收准确的Date类属性的问题
出参格式化
- 调用接口的返回结果为:
"date": "2018-08-01T14:25:31.296+0000"
这个格式并不是我们想要的,那么如何将其进行格式化?这时就需要用到 jackson 的 @JsonFormat 注解
- @JsonFormat
@transient 就是在给某个javabean上需要添加个属性,但是这个属性你又不希望给存到数据库中去,仅仅是做个临时变量,用一下。不修改已经存在数据库的数据的数据结构。
———————————————————————数据访问层的实现类上
是
声明式事务管理
编程中使用的注解———————————————————————业务逻辑层的实现类上
- @Autowired和@Resource注解都是作为bean对象注入的时候使用的
- 两者都可以声明在字段和setter方法上 总结:
存在一个实现类都会注入进去,存在多个实现都会自动根据名称进行注入,只不过判断的先后顺序不同。
@Resource 由jdk提供
@Autowired 由spring提供
@Autowired//默认按type注入
@Qualifier(“cusInfoService”)//一般作为@Autowired()的修饰用
@Resource(name=“cusInfoService”)//默认按name注入,可以通过name和type属性进行选择性注入
一般@Autowired和@Qualifier一起用,@Resource单独用。
当然没有冲突的话@Autowired也可以单独用
———————————————————————表示层上
- @RestController (就不用跳视图了—不用页面的跳转时候使用)
###RequestMapping(“/index”)【用于标注控制层,相当于struts中的action层,页面的跳转时候使用】
@GetMapping(用于处理请求方法的GET类型)
@ PostMapping(用于处理请求方法的POST类型等。)
是用在类上,表明是swagger资源,
拥有两个属性:value、tags
注:生成的api文档会根据tags分类,即这个controller中的所有接口生成的接口文档都会在tags这个list下;tags如果有多个值,会生成多个list,每个list都显示所有接口
`@ApiOperation`
value用于方法描述
notes用于提示内容
tags可以重新分组
@ApiImplicitParam:一个请求参数&&@ApiImplicitParams:用于包含多个 @ApiImplicitParam
- name :参数名。
- value : 参数的具体意义,作用。
- required : 参数是否必填。
- dataType :参数的数据类型。
- paramType :查询参数类型,这里有几种形式:
path 以地址的形式提交数据
query 直接跟参数完成自动映射赋值
body 以流的形式提交 仅支持POST
header 参数在request headers 里边提交
form 以form表单的形式提交 仅支持POST
- 被这个paramType坑过一次,在开发萌友智运APP的接口时,当发POST请求的时候,当时接受的整个参数,不论用body还是query,后台都会报Body Missing错误;这个参数和SpringMvc中的@RequestBody冲突,去掉paramType对接口测试并没有影响。
@RequestParam
作用:@RequestParam 常用来处理简单类型的绑定
影响:不使用@RequestParam注解时,前端请求参数携带与不携带都能正常访问接口,只是接收的参数值为空而已,相当于@RequestParam的required的值是false一样,而在使用@RequestParam注解且为未说明required的值是false的时候,前端请求就必须携带参数,不然直接报错
说明:这里的get和post方式将参数放入Params中都能进行访问
@RequestBody
作用:@RequestBody 适用于以POST为请求方式,请求参数以Json格式放在请求体中的前端请求,所以在使用@RequestBody接收数据时,一般都用POST方式进行提交,并将参数放以Json的格式放在请求体中。
两者特点:当然在后端接口中,@RequestBody与@RequestParam()可以同时使用,但得注意@RequestBody最多只能有一个,而@RequestParam()可以有多个
想要使用@ApiOperationSupport注解隐藏请求参数
- 引入pom依赖
- 在swaggerconfig中加@EnableKnife4j这个注解
- 使用:在方法前直接使用该注解即可,注解中添加的参数就是需要请求时隐藏的参数
为什么使用@Validated
- 前端传过来数据的时候,要进行校验,但是大量的校验很繁琐,会造成大量的if else语句的产生
@Validated的使用:
- 定义实体类,在要验证参数上加注解
- 在接口参数省添加@Validated注解
Validated分组验证看链接学习
———————————————————————Swagger的注解
@ApiImplicitParam注解【Swagger的注解】
添加链接描述
java自定义一个获取当前登录用户的注解,如@CurrentUser,这样就不用每次request.getAttribute(“xxx”)这样获取了
使用到的两个枚举
ElementType枚举:
TYPE //接口、类、枚举
.FIELD //字段、枚举的常量
METHOD //方法
PARAMETER //方法参数
CONSTRUCTOR //构造函数
LOCAL_VARIABLE //局部变量
ANNOTATION_TYPE //注解
PACKAGE ///包
RetentionPolicy枚举:
SOURCE //注解在源码是有效,将被编译器丢弃
CLASS //注解在编译时有效,但在运行时没有保留。这也是默认行为
RUNTIME //运行时有效,并且可以通过反射获取
流程:
- 自定义注解
- 自定义一个类,然后实现实现方法参数解析器HandlerMethodArgumentResolver,将request获取到的用户信息返回给我们的@CurrentUser注解【参见package org.cloud.extension.resolver;】
- 注意:如果是SpringMVC项目,则需要将参数解析器注册到HandlerAdapter中【最后在spring-mvc.xml中添加一个参数解析器bean来初始化我们自定义的类】
- 于是我们就可以在我们的controller中使用我们获取当前用户的注解@CurrentUser了
—————————————————————————日志类中
@Log 自定义操作日志注解【如何自定义log注解,实现日志操作(切面编程)】
有的同学在工作学习时常常遇到这样一个需求,就是进行对日志表的增删改查。记录用户的操作。啊,有的小伙伴说:这还不简单,一顿操作猛如虎,在每个方法下面都写上了insert语句。
流程:
一、在你的代码中加入一个Log注解类
一、枚举类 BusinessType (功能.例如是新增还是修改)&&枚举类 OperatorType(操作人类别)
二、新建CustomLogAspect类(重要)
说明:下面这个类,可以完全复制。
a.注意logPointCut :切入点 。
b. handleLog:操作数据库。我这里记录的较详细。可根据您的需求进行增删。
三、写好上面的代码,您就可以在需要记录操作日志的方法上加上@Log注解,这样就可以对增加log日志啦!
- 作者:鹿晓鹏
- 链接:https://luxiaopeng.cn/java/springboot_notes
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。