目录

参考

下面是自己写的笔记

java注解大全参考:

实用的注解:

@Controller 和 @RestController

@RequestMapper

@PathVariable 和 @RequestParam和 @RequestBody

@DateTimeFormat 和@JsonFormat

@Data

@AllArgsConstructor和@NOArgsConstructor

@Transactional

@CrossOrigin

@transient 和 @TableField

JSR303数据校验

@Pattern和@Valid和@validated

分组校验groups属性

@Builder

@configurationproperties注解

@JsonProperty和@JSONField,@SerializedName

@InitBinder

@ConfigurationProperties和@value

@AutoConfigureBefore 和 @AutoConfigureAfter

@ExcelProperty

swagger2 注解说明:

了解的注解:

@FunctionalInterface

依赖和插件

PageHelper

Free Mybatis Plugin

UUIDGenerator类

StringUtils 类

Workbook类

工具类Tika

Logger日志类

定时器

工具


参考

重点参考:java开发注解大全    这里面除了spring的常用注解以外,还有其它包的注解 比较全

SpringBoot参考:SpringBoot注解大全

下面是自己总结的

下面是自己写的笔记

java注解大全参考:

java开发注解大全 - 华哒妹妹 - 博客园

实用的注解:

@Controller 和 @RestController

使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

@RequestMapper

用来处理请求地址映射的注解,可用于类或方法上 参考:@RequestMapping 用法详解之地址映射(转) - 红酒人生 - 博客园

可以被下面的新注解替代

  • @GetMapping

  • @PostMapping

  • @PutMapping

  • @DeleteMapping

  • @PatchMapping

如:

@RequestMapping(value = "/get/{id}", method = RequestMethod.GET) 等于 @GetMapping("/get/{id}")

@PathVariable@RequestParam@RequestBody

获取前端传过来的参数 @RequestParam@RequestBody 常用一些,@PathVariable不常用

当然前端用json对象传输时也可以不用注解,直接用和前端一样的参数名也可以接受到值

参考:SpringBoot实现前后端数据交互、json数据交互、Controller接收参数的几种常用方式_月半花开的博客-CSDN博客_springboot前端获取后端数据

参考:后端如何接受前端传过来的Json数据_求知者_______的博客-CSDN博客_后端怎么接收前端的json数据

@PathVariable,@RequestParam中的name和value 如:@RequestParam(value = "pageSize") Integer pageSize value其实就是我们在前台页面传过来的参数名称, 用来解决前后台传入参数不一致的问题 注意:name和value只能使用一个, name和value属性也是完全等价 参考:@PathVariable,@RequestParam中的name和value_cauchy6317的博客-CSDN博客_@requestparam name和value

@RequestBody在方法参数中只能使用一个,如果多个参数都要使用该注解,可以将多个参数封装在一个类中,使用该类接受值 @RequestBody接收的参数是来自requestBody中,即请求体 ,因此该注解常用于post请求,不能用于get请求

@RequestBody和@RequestParam区别: 参考:POST、GET、@RequestBody和@RequestParam区别_Hello World-CSDN博客_@requestparam

@DateTimeFormat 和@JsonFormat

参考 @DateTimeFormat 和 @JsonFormat 注解_月下泛舟的博客-CSDN博客_datetimeformat

@DateTimeFormat 入参格式化

 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")private Date date;
//在前端传入参数 必须是上面的格式
//date返回这样的格式:"2018-08-01T14:25:31.296+0000"   因为是Date对象

@JsonFormat 出参格式化(实用)

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date date;
//date返回 "2018-08-01 14:32:57"  的格式
//该注解看需求是否添加时区  timezone = "GMT+8"
//完整示例
public class User {private String id;private String name;@JsonFormat(pattern = "yyyy-MM-dd")private Date bir;//格式化了时间,当然也可以在get/set方法上添加private String sex;private String address;
}

@Data

可以为类提供读写功能,从而不用写get、set方法。 还会为类提供 equals()、hashCode()、toString() 方法。

使用: 1、安装lombok插件 2、 在maven库中添加依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version><scope>provided</scope>
</dependency>

3、 在实体类上添加@Data注解即可生效

4、如果有问题,看看是否是jdk版本不对,和包的版本冲突了 参考:解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile_分享传递价值-CSDN博客 Idea在实体类中添加@Data注解后启动时编译报错 java:找不到符号_吹啊~吹啊~大风吹~~-CSDN博客_@data找不到符号

@AllArgsConstructor和@NOArgsConstructor

lombok中的注解, 一般和@Data一起使用 构造函数,该构造函数含有所有已声明字段属性参数 构造函数,该构造函数无参数,空构造函数

@Transactional

声明式事务管理 参考:@Transactional 详解_愿我如星君如月 ... 夜夜流光相皎洁 ...-CSDN博客_@transactional

@CrossOrigin

解决跨域的问题.

解决前端报错 项目是springboot框架,前后端分离,需要跨域 添加 @CrossOrigin @CrossOrigin只在方法中配置跨域时,只需要在方法名上加上这一注解就行吗,如果是通用所有的ip访问,就再设置(origins = “*”,maxAge = 3600),当然也可以细化具体的ip。

@CrossOrigin(origins ="*",maxAge = 3600)

参考:解决前端跨域的问题.Access to XMLHttpRequest at http://xxx.xxx from origin 'http://localhost:8000' has been bl_我在深圳的这些日子的博客-CSDN博客

@transient 和 @TableField

mybatis-忽略实体对象的某个属性

方法一: 在需要忽略的属性上增加@transient注解

javax.persistence.Transient;

transient是类型修饰符,只能用来修饰字段。在对象序列化过程中, /被transient标记的变量不会被序列化

方法二: 使用mybatis-plus注解 @TableField(exist = false) false代表此字段不是数据库表字段

JSR303数据校验(常用)

参考:使用JSR-303进行校验 ,哪吒的博客  ​​​​​​

JSR303数据校验 - 简书

@Pattern和@Valid和@validated和@NotBlank等验证注解(常用)

其中要使用@Pattern和@NotBlank等验证注解的必要条件都是先使用@Valid注解

参考:​​​​​​使用@Pattern@Validated校验 并抛出异常_我的风格0.0的博客-CSDN博客​​​​​​

下面这个链接必看啊

(必看,这个必看啊)JAVA 注解校验神器@Valid@validated分组校验、条件校验、自定义校验 关于@validated分组校验的文章有很多,但大多写的比较繁杂,代码还不够干净。本文使用最简单的方式说明了 @validated分组校验的方法以及示例。https://blog.csdn.net/weixin_44248490/article/details/108779144

@Validated分组校验groups属性

该属性在NotBlank和NotNull等验证注解都存在

参考:JSR-303注解中的分组校验groups属性 - phax-ccc - 博客园

@Validated分组校验 - 知乎      (必看)

@Builder

为你的类生成相对略微复杂的构建器API 参考:https://blog.csdn.net/djrm11/article/details/104653877/

@configurationproperties注解

用于获取配置文件的值:如application.yml配置文件的值

参考:Spring Boot获取配置文件application.yml的属性值_奋斗的IT青年-CSDN博客_springboot获取application.yml的值

@ConfigurationProperties 注解使用姿势

@JsonProperty和@JSONField,@SerializedName

@JsonProperty和@JSONField:
目的:都是都是为了解决json字符串的某些属性名和JavaBean中的属性名匹配不上的问题。
这两个注解的作用一样,但为了避免意外,常常两个一起使用

@JsonProperty("JsonPropertyName")
private String name;// json-->java 时:将josn中的JsonPropertyName对象名称转换为name
// java-->json 时:将name---变为--->JsonPropertyName

参考:@JsonProperty和JSONField的区别?_

@SerializedName:
目的:主要是和前端传过来的json数据key值对应,转换为类中自定义的属性 (特别是在前后端参数名称没有对应上的时候,比如前端乱命名,和后端对应不上,就可以使用该注解重新对应,不用更改类的属性名称

参考:@SerializedName注解_lplj717的博客-CSDN博客_serializedname

google注解@SerializedName的使用说明_Hanson_GG的博客-CSDN博客

@InitBinder

该注解的作用是:初始化一些绑定规则(相当于属性编辑器,可以在后端接收前端参数时进行处理)

常用于控制层

常用的如:

@InitBinder
public void initBinder(WebDataBinder binder){     //让_ID属性无法被接收        binder.setDisallowedFields("_ID");
}
  • 注意:initBinder注解的方法返回值只能是void
  • WebDataBinder 中不少方法,我们这里使用到了setDisallowedFields。它可以让前端传来的多个参数中,_ID 这个参数无效。避免前端传错参数

参考:springMVC之@InitBinder的用法_wang0907的博客-CSDN博客_initbinder

springmvc学习笔记(24)——initBinder注解_这个2000都搞的博客-CSDN博客

@ConfigurationProperties和@value

这两个注解都是读取application.xml配置文件中的值

注意:在使用@value时要注意,使用@value的类要被spring容器管理意思就是要被注入bean,这时@value才能生效。同时@Value不能静态成员上使用

参考:springboot如何在Java中获取yml中的配置_YHJ的博客-CSDN博客_java获取yml文件配置

@ConfigurationProperties使用及与@Value对比_shuos_yan的博客-CSDN博客_configurationproperties和value

@AutoConfigureBefore 和 @AutoConfigureAfter

@AutoConfigureBefore(AAAA.class)
public class CCCC {
}// CCCC 将会在 AAAA之前加载@AutoConfigureAfter(AAAA.class)
public class CCCC {
}// CCCC 将会在 AAAA 之后加载

参考:注解 @AutoConfigureBefore 和 @AutoConfigureAfter 的用途_

@ExcelProperty

该注解主要用于导出表格的使用(非常好用哦

参考:@excel 注解_Java读写Excel原来这么简单_愤怒的不死鸟的博客-CSDN博客

@Scheduled

执行定时任务。参考下面的定时器

swagger2 注解说明:

主要有的注解有:

1.1、请求类的描述

注解 说明
@Api 对请求类的说明

1.2、方法和方法参数的描述

注解 说明
@ApiOperation 方法的说明
@ApiImplicitParams 方法参数的说明;
@ApiImplicitParam 用于指定单个参数的说明。

1.3、方法的响应状态的描述

注解 说明
@ApiResponses 方法返回值的说明 ;
@ApiResponse 用在@ApiResponses中,一般用于表达一个错误的响应信息

1.4、对象的描述

注解 说明
@ApiModel 用在JavaBean类上,说明JavaBean的 整体用途
@ApiModelProperty 用在JavaBean类的属性上面,说明此属性的的含议

@Api: 修饰整个类,用于controller类上
@ApiOperation: 描述一个接口,用户controller方法上
@ApiParam: 单个参数描述
@ApiModel: 用来对象接收参数,即返回对象
@ApiModelProperty: 对象接收参数时,描述对象的字段,用于entity类中的字段
@ApiResponse: Http响应其中的描述,在ApiResonse中
@ApiResponses: Http响应所有的描述,用在
@ApiIgnore: 忽略这个API
@ApiError: 发生错误的返回信息
@ApiImplicitParam: 一个请求参数
@ApiImplicitParams: 多个请求参数
等。。。。。。。。。。。。。。。。

具体参考

swagger2 注解说明_猎人在吃肉的博客-CSDN博客_swagger注解

Swagger 入门教程

了解的注解:

@FunctionalInterface

参考:JDK8新特性:函数式接口@FunctionalInterface的使用说明_aty-CSDN博客_@functionalinterface 说明这是一个函数式接口,不是必须的,可加可不加 @FunctionalInterface标记在接口上,“函数式接口”是指仅仅只包含一个抽象方法的接口。

自定义注解

@Aspect等相关注解

@Aspect:作用是把当前类标识为一个切面供容器读取@Pointcut:Pointcut是植入Advice的触发条件。每个Pointcut的定义包括2部分,一是表达式,二是方法签名。方法签名必须是 public及void型。可以将Pointcut中的方法看作是一个被Advice引用的助记符,因为表达式不直观,因此我们可以通过方法签名的方式为 此表达式命名。因此Pointcut中的方法只需要方法签名,而不需要在方法体内编写实际代码。
@Around:环绕增强,相当于MethodInterceptor
@AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行
@Before:标识一个前置增强方法,相当于BeforeAdvice的功能,相似功能的还有
@AfterThrowing:异常抛出增强,相当于ThrowsAdvice
@After: final增强,不管是抛出异常或者正常退出都会执行

该使用一般用于  AOP自定义注解,可以参考我的  java细知识点博客的   接口签名校验,AOP自定义注解,这里有详细的使用。

这里举例:

1、定义注解:

/*** 自定义注解*/
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Sign {
}

2、定义切面实现代码

/*** 事件的切面,切方法**/
@Aspect
@Order(1)
@Component
public class SignAop{/*** 定义切点, execution里是自定义注解的类的路径,当然这里还可以使用Pointcut里的其它属性*/@Pointcut("execution(@com.XXXX.Sign * *(..))")public void happen() {}// 也可以像这样,定义切点为控制层下的和RequestMapping等方法
/**
@Pointcut("(execution(public * com..*Controller.*(..))) and (@annotation(org.springframework.web.bind.annotation.RequestMapping) or @annotation(org.springframework.web.bind.annotation.GetMapping) or @annotation(org.springframework.web.bind.annotation.PostMapping))")
*/// 实现切面的代码,Around是标识那个方法@Around("happen()")public Object publish(ProceedingJoinPoint pjp) throws Throwable {/** 具体代码实现*/}
}

3、使用注解  @Sign ,将它添加到你要使用的地方,我这里是控制层

    @Sign@PostMapping("/test")public void test(@IdParam @RequestBody @Valid Student student) throws Exception {}

依赖和插件

PageHelper

分页插件的使用方法

具体步骤: 1、导包 2、配置插件拦截规则 3、使用

1、添加依赖 2、使用 3、参考 Mybatis分页插件PageHelper使用教程(图文详细版)_筱强的博客-CSDN博客_pagehelper使用教程 4、配置规则参考Pagehelper分页插件的配置和各种使用方式 - Sharpest - 博客园

    <!--添加分页插件-->
<!--只配置当前这一个依赖 PageHelper不生效--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version></dependency>
<!--还需要把这个依赖添加到pom当中  自动排序和分页就可以使用了-->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-autoconfigure</artifactId><version>1.2.3</version>
</dependency>

Free Mybatis Plugin

mybatis框架下mapper接口快速跳转对应xml文件 亲测好用!

idea插件直接安装即可

idea插件(mybatis框架下mapper接口快速跳转对应xml文件)亲测好用! - King-DA - 博客园

spring的RestTemplate使用

在学习与工作中,常常遇见需要调用他人写好的API接口的情况,前端一般采用AjaxAxios来调用后端的接口获取数据,而后端调用接口的方式有很多,这里介绍基于Spring框架的RestTemplate

参考:RestTemplate | 使用详解_     重点重点参考

RestTemplate的请求参数传递问题 RestTemplate发送Get请求通过body传参问题_                RestTemplate中postForEntity其中参数为数组或者List_RestTemplate的请求参数传递问题 RestTemplate发送Get请求通过body传参问题_

注意:RestTemplate请求的服务实例返回List类型,用数组接收

参考:RestTemplate中postForEntity其中参数为数组或者List_道一哥哥的博客-CSDN博客_postforentity传参

常用模板(post):

 public JSONArray accountDetails(String token, List<String> usernames) {String url = "xxxxxxxxxxxxxxxxxx";// @formatter:offMultiValueMap<String, Object> params = new LinkedMultiValueMap<>(2);params.add("access_token"  , token);params.addAll("username[]" , usernames);// @formatter:onJSONObject json = (JSONObject) restTemplateUtils.post(url, params, JSONObject.class);log.info("查询响应:{}", json.toJSONString());if (json.getInteger("ret") == 0) {return json.getJSONObject"data").getJSONArray("data");}return null;}/*** 封装的post通用部分** @param url    请求路径* @param params 参数* @param clazz  响应类型* @return 请求成功返回body, 请求失败抛出异常*/public Object post(String url, MultiValueMap<String, Object> params, Class<?> clazz) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(params, headers);ResponseEntity<?> response = restTemplate.postForEntity(url, request, clazz);if (response.getStatusCode() != HttpStatus.OK) {throw new ResponseStatusException(response.getStatusCode(), "请求出错");}return response.getBody();}

UUIDGenerator类

ID生成器

private IDGenerator idGenerator = UUIDGenerator.getInstance();
id.generate();  //生成唯一的id

参考:

ID生成器介绍及著名的五大开源ID生成器的使用UUID,snowflake:ID生成器介绍及著名的五大开源ID生成器的使用UUID,snowflake_心之所向博客-CSDN博客_id生成器

StringUtils 类

StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充

除了构造器,StringUtils 中一共有130多个方法,并且都是 static 的,所以我们可以这样调用 StringUtils.xxx()

参考:Java之StringUtils的常用方法_命中的缘分的博客-CSDN博客_stringutils

Workbook类

对Excel进行操作

它的子类中: HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls; XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;

参考: Java WorkBook对Excel的基本操作_张志翔的博客-CSDN博客_workbook 重点参考 java用XSSFWorkbook实现读写Excel - 那心之所向 - 博客园

工具类Tika

是一个内容分析工具包,可以检测上千种文件类型,并提取它们的元数据和文本

参考自己写的博客:java 解析文档如excel等的工具类Tika_我的风格0.0的博客-CSDN博客_tika解析excel

Logger日志类

参考:Logger打印日志_码农大圣的博客-CSDN博客_logger.info

java日志LoggerFactory.getLogger最全讲解使用方法_滑稽的鼠标的博客

其中:{}  花括号用于是占位符,用于接收变量  
参考:
logger  占位符{}  的使用

//调试日志private final static Logger logger = LoggerFactory.getLogger(XXXXXX.class);/*
*LoggerFactory.getLogger可以在IDE控制台打印日志,便于开发,一般加在最上面
*优点:使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类
*/

定时器,定时任务

参考:

Java 定时任务的几种实现方式(重点): Java 定时任务的几种实现方式 - 简书

其中@Scheduled的方式推荐使用(注意该注解要配合@EnableScheduling使用),下面是该方式的示例:

Java 实现 Springboot 定时任务(每隔一段时间自动执行一次)

java定时器,每天执行一次/每隔多久执行一次_

@Scheduled使用及讲解_

Java 定时任务技术趋势 - 掘金

工具

mybatis-generator-gui    mybatis图形化界面,可以生成基类及其mapper类和sql

参考:mybatis-generator-gui 一款 mybatis generator 的图形界面工具

工具已上传

常用注解,依赖,常用类,插件和其它(自用)相关推荐

  1. MybatisPlus常用注解——@TableId解决类主键和数据库主键不一致

    MyBatis-Plus在实现CRUD时,会默认将id作为主键列,并在插入数据时,默认基于雪花算法的策略生成id. 若实体类和表中表示主键的不是id,而是其他字段,例如uid,MyBatis-Plus ...

  2. 声明式事务、Spring 中常用注解、Ajax

    五. 声明式事务 编程式事务: 1.1 由程序员编程事务控制代码. 1.2 OpenSessionInView 编程式事务 声明式事务: 先引入依赖 <dependency><gro ...

  3. Spring常用注解,注解 IOC ,AOP,MVC 的理解

    文章目录 大佬总结 0.Spring常用注解 0.1.SpringBootController里面的用法 0.1.1.SpringBoot 中常用注解@Controller/@RestControll ...

  4. springboot依赖lombok插件、lombok常用注解

    --springboot依赖lombok插件.lombok常用注解 1 lombok插件 1.1 lombok插件简介 官方介绍如下: 意思是:lombok是一个能自动插入到编辑器和构建工具的java ...

  5. TkMyBatis插件构造方法常用注解

    一.使用TkMyBatis插件 1.步骤: 1.在 SpringBoot启动类上面添加扫描Mapper接口注解 @MapperSan("Mapper层接口权限定名").并使用:tk ...

  6. @aspect注解类不生效_Spring Boot从入门到精通(三)常用注解含义及用法分析总结...

    Spring Boot是目前非常流行的框架,而注解是Spring Boot的核心功能,接下来主要说一说Spring Boot常用注解的含义以及部分注解在项目中的使用方法. @RestControlle ...

  7. Spring/SpringBoot常用注解总结

    目录如下,内容有点多: 1. @SpringBootApplication 这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它. 注:这个注解是 Sp ...

  8. 近100个Spring/SpringBoot常用注解汇总!

    作者 | Guide 来源 | JavaGuide(微信公众号) 毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我 ...

  9. lombok常用注解使用说明

    POM添加依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok&l ...

最新文章

  1. 搭建前端私有npm杂记
  2. 【PC工具】注意安全,建议使用:安全软件,谷歌输入法下载
  3. tcptracerte参数_TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】
  4. 算法的力量万变不离其宗 -- 李开复
  5. 【配置属性】—Entity Framework实例详解
  6. mongodb和mysql的对比_Mongodb与mysql语法比较
  7. linux怎么打开rdp文件,RDP报表工具如何在Linux机器上部署?
  8. python 实现A星算法
  9. 四叶草剧场服务器维修价格,四叶草剧场服务器介绍 服务器选择攻略
  10. iOS-发布按钮动画(类似于闲鱼发布),弹出动画github开源
  11. 谭浩强C++ 第二章
  12. 电商网站的价格大概多少钱?
  13. win10系统更新完部分电脑亮度无法调节或者找不到模块
  14. C#发送企业内部邮件
  15. 网课在线搜题公众号制作
  16. 适合送给学计算机男生的礼物,送毕业学长什么礼物比较好(适合送男生的毕业礼物)...
  17. [易飞]关于易飞ERP进货单审核过程的总结
  18. 从Web日志还原SQL注入拖走的数据
  19. 述职答辩提问环节一般可以问些什么_述职答辩前
  20. 社区卫生医疗信息平台

热门文章

  1. 【动态内存管理】(超详解,附带面试题)
  2. 配置Dot1q终结子接口实现同设备VLAN间通信
  3. Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真
  4. 裕网云流量卡官网源码自适应UI界面开源
  5. 阿里内推邀请:If not now, when? If not you, who?
  6. FCU-HiL测试介绍
  7. 传奇版本自动穿背包中的装备脚本
  8. Centos7安装IUS源
  9. 一个手机用c网可以打开网站切换到g网就打不开_推荐7个鲜为人知的搜索网站,让人眼前一亮...
  10. python群发邮件并将excel附件添加到正文