常用注解,依赖,常用类,插件和其它(自用)
目录
参考
下面是自己写的笔记
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
接口的情况,前端一般采用Ajax
或Axios
来调用后端的接口获取数据,而后端调用接口的方式有很多,这里介绍基于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 的图形界面工具
工具已上传
常用注解,依赖,常用类,插件和其它(自用)相关推荐
- MybatisPlus常用注解——@TableId解决类主键和数据库主键不一致
MyBatis-Plus在实现CRUD时,会默认将id作为主键列,并在插入数据时,默认基于雪花算法的策略生成id. 若实体类和表中表示主键的不是id,而是其他字段,例如uid,MyBatis-Plus ...
- 声明式事务、Spring 中常用注解、Ajax
五. 声明式事务 编程式事务: 1.1 由程序员编程事务控制代码. 1.2 OpenSessionInView 编程式事务 声明式事务: 先引入依赖 <dependency><gro ...
- Spring常用注解,注解 IOC ,AOP,MVC 的理解
文章目录 大佬总结 0.Spring常用注解 0.1.SpringBootController里面的用法 0.1.1.SpringBoot 中常用注解@Controller/@RestControll ...
- springboot依赖lombok插件、lombok常用注解
--springboot依赖lombok插件.lombok常用注解 1 lombok插件 1.1 lombok插件简介 官方介绍如下: 意思是:lombok是一个能自动插入到编辑器和构建工具的java ...
- TkMyBatis插件构造方法常用注解
一.使用TkMyBatis插件 1.步骤: 1.在 SpringBoot启动类上面添加扫描Mapper接口注解 @MapperSan("Mapper层接口权限定名").并使用:tk ...
- @aspect注解类不生效_Spring Boot从入门到精通(三)常用注解含义及用法分析总结...
Spring Boot是目前非常流行的框架,而注解是Spring Boot的核心功能,接下来主要说一说Spring Boot常用注解的含义以及部分注解在项目中的使用方法. @RestControlle ...
- Spring/SpringBoot常用注解总结
目录如下,内容有点多: 1. @SpringBootApplication 这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它. 注:这个注解是 Sp ...
- 近100个Spring/SpringBoot常用注解汇总!
作者 | Guide 来源 | JavaGuide(微信公众号) 毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我 ...
- lombok常用注解使用说明
POM添加依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok&l ...
最新文章
- 搭建前端私有npm杂记
- 【PC工具】注意安全,建议使用:安全软件,谷歌输入法下载
- tcptracerte参数_TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】
- 算法的力量万变不离其宗 -- 李开复
- 【配置属性】—Entity Framework实例详解
- mongodb和mysql的对比_Mongodb与mysql语法比较
- linux怎么打开rdp文件,RDP报表工具如何在Linux机器上部署?
- python 实现A星算法
- 四叶草剧场服务器维修价格,四叶草剧场服务器介绍 服务器选择攻略
- iOS-发布按钮动画(类似于闲鱼发布),弹出动画github开源
- 谭浩强C++ 第二章
- 电商网站的价格大概多少钱?
- win10系统更新完部分电脑亮度无法调节或者找不到模块
- C#发送企业内部邮件
- 网课在线搜题公众号制作
- 适合送给学计算机男生的礼物,送毕业学长什么礼物比较好(适合送男生的毕业礼物)...
- [易飞]关于易飞ERP进货单审核过程的总结
- 从Web日志还原SQL注入拖走的数据
- 述职答辩提问环节一般可以问些什么_述职答辩前
- 社区卫生医疗信息平台
热门文章
- 【动态内存管理】(超详解,附带面试题)
- 配置Dot1q终结子接口实现同设备VLAN间通信
- Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真
- 裕网云流量卡官网源码自适应UI界面开源
- 阿里内推邀请:If not now, when? If not you, who?
- FCU-HiL测试介绍
- 传奇版本自动穿背包中的装备脚本
- Centos7安装IUS源
- 一个手机用c网可以打开网站切换到g网就打不开_推荐7个鲜为人知的搜索网站,让人眼前一亮...
- python群发邮件并将excel附件添加到正文