注解(整理)

一、Spring相关注解

  1. @Autowired:这是Spring提供的一个非常方便的注解,用于自动装配bean。它可以应用于字段、构造函数和方法参数等,Spring容器会自动寻找匹配的bean并注入。这样,开发者无需手动编写繁琐的setter注入代码。
  2. @Component:这是Spring提供的一个泛化的概念注解,表示一个类是一个Spring组件。当使用基于注解的配置和类路径扫描时,这些类会被视为自动检测的候选对象。
  3. @Value:这个注解用于注入配置文件中的值或表达式的结果到类的字段或方法中。
  4. @Configuration:这个注解用于定义配置类,它允许使用Java代码替代XML文件来定义bean。
  5. @Bean:通常与@Configuration一起使用,用于定义一个bean。Spring容器会管理这些bean的生命周期。
  6. @RequestMapping:在控制器层中,@RequestMapping用于映射web请求到特定的处理器函数。它可以用于类或方法上。
  7. @Controller@RestController:这两个注解用于标识一个类为控制器层组件。@Controller通常与视图解析器一起使用,返回视图名称;而@RestController则返回JSON或XML等数据,用于构建RESTful风格的Web服务。
  8. @PathVariable:用于获取URI模板变量值,即URI中{}中的值。
  9. @Qualifier:与@Autowired配合使用,用于指定要注入的Bean的名称或限定符。
  10. @Service:用于标识服务层
  11. @Controller: 描述控制层 
  12. @Repository:描述数据访问层
  13. @ComponentScan:用于配置组件扫描的路径,Spring会扫描该路径下的类,并将符合条件的类注册为Spring容器中的Bean。

  14. @Profile:用于指定组件在哪个环境(profile)下被注册,可以实现不同环境下使用不同的配置。

  15. @Lazy:用于延迟初始化Bean,即Spring容器启动时不会立即创建该Bean的实例,而是在首次使用时才创建。

  16. @Scope:用于定义Bean的作用域,例如singleton(单例)、prototype(原型)、request(请求作用域)、session(会话作用域)等。

  17. @Async:用于声明异步方法,使得被标注的方法将异步执行。

  18. @Transactional:用于声明事务性方法,可以指定事务的传播行为、隔离级别、只读属性等。

  19. @Import:用于导入其他配置类,将其他配置类中的Bean定义合并到当前配置类中。

  20. @ImportResource:用于导入传统的Spring XML配置文件,使得XML中定义的Bean可以与基于Java的配置类定义的Bean一起使用。

  21. @PostMapping  注解是 Spring Boot 中用来声明 POST 请求处理方法的注解,它的作用有以下几个方面:

    声明方法为 POST 请求处理方法:@PostMapping 注解告诉 Spring Boot,这个方法是用来处理客户端发送的 POST 请求的。

    自动转换为 JSON 或 XML:@PostMapping 注解可以自动将请求体中的数据转换为 Java 对象,并将返回值转换为 JSON 或 XML 格式,方便客户端解析处理。

    简化代码:@PostMapping 注解可以大大简化 POST 请求处理方法的开发,减少代码量和冗余操作。

  22. @RequestMapping注解:声明请求的路径和请求方法

  23. @ResponseBody 注解:告诉 Spring Boot,返回值需要转换为 JSON 或 XML 格式。

  24. @GetMapping注解可以用于类和方法上,用于定义HTTP GET请求的URL路径。当客户端发送HTTP GET请求时,Spring Boot会自动将请求映射到具有相应URL路径的控制器方法上。

  25. @PutMapping和@PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。两者差别不是很明显。

  26. @PatchMapping的目的是对资源数据打补丁或局部更新

  27. @DeleteMapping删除URL映射

  28. @RestControllerAdvice是一个组合注解,由@ControllerAdvice、@ResponseBody组成,而@ControllerAdvice继承了@Component,因此@RestControllerAdvice本质上是个Component,用于定义@ExceptionHandler,@InitBinder和@ModelAttribute方法,适用于所有使用@RequestMapping方法。

  29. @ResponseStatus注解是spring-web包中提供的一个注解,具有valuecodereason 三个属性。@ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中,当修饰一个类的时候,通常修饰的是一个异常类。
  30. @transcational注解是Spring 框架提供的声明式注解事务解决方案

    ,我们在开发中使用事务保证方法对数据库操作的原子性,要么全部成功,要么全部失败,在使用@Transactional注解时需要注意以下问题:

                 1. @Transactional  注解只能用在public 方法上,如果用在protected或者private的方法上,不会报错,但是该注解不会生效。

                 2. @Transactional注解只能回滚非检查型异常,具体为RuntimeException及其子类和Error子类,可以从Spring源码的DefaultTransactionAttribute类里找到判断方法rollbackOn。

    @Overridepublic boolean rollbackOn(Throwable ex) {return (ex instanceof RuntimeException || ex instanceof Error);}

      3. 使用rollbackFor 属性来定义回滚的异常类型,使用 propagation 属性定义事务的传播行为。如:   回滚Exception类的异常,事务的传播行为支持当前事务,当前如果没有事务,那么会创建一个事务。

    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)

         4. @Transactional注解不能回滚被try{}catch() 捕获的异常。

                 5. @Transactional注解只能对在被Spring 容器扫描到的类下的方法生效。

           其实Spring事务的创建也是有一定的规则,对于一个方法里已经存在的事务,Spring 也提供了解决方案去进一步处理存在事务,通过设置@Tranasctional的propagation 属性定义Spring 事务的传播规则。

二、Mybatis相关注解

  1. @mapper描述数据层 (Mapper),这个注解告诉MyBatis这个接口是用于执行SQL语句的。

  2. @Select:用于配置查询操作的SQL语句。

  3. @Insert:用于配置插入操作的SQL语句。

  4. @Update:用于配置更新操作的SQL语句。

  5. @Delete:用于配置删除操作的SQL语句。

  6. @Results 和 @Result:用于设置结果集合和结果。这两个注解通常一起使用,用于定义SQL查询结果到Java对象的映射关系。

  7. @ResultMap:用于引用结果集合。当结果映射比较复杂时,可以使用@ResultMap注解来引用一个预先定义好的结果映射。

  8. @SelectKey:用于获取最新插入的记录的ID。这在需要获取自增主键或其他数据库生成的键值时非常有用。

  9. @Param:这个注解用于在Mapper接口方法中标识参数,尤其是当方法有多个参数时。这可以帮助MyBatis区分参数,以便在SQL语句中正确地引用它们。

  10. @Options:这个注解用于配置一些全局的选项,比如是否使用生成的键(如自增主键),以及是否刷新缓存等。

  11. @One 和 @Many:这两个注解通常用于处理一对一和一对多的关联查询。它们可以帮助开发者在单个查询中加载相关的对象或对象集合。

三、Lombok 相关注解

  1. @Data是一种方便的快捷注释,它将@ToString、@EqualsAndHashCode、@Getter/@Setter和@RequiredArgsConstructor的功能捆绑在一起:换句话说,@Data生成通常与简单POJO(普通旧Java对象)和bean关联的所有样板文件:所有字段的Getter,所有非最终字段的Setter,以及适当的toString、equals和hashCode实现,这些实现涉及类的字段,以及初始化所有最终字段的构造函数,以及所有没有使用@NonNull标记的初始化器的非最终字段,以确保字段永远不为null。

  2. @Getter 和 @Setter:这两个注解分别为类的字段生成getter和setter方法。如果只需要为某些字段生成getter或setter方法,而不是全部字段,那么可以使用这两个注解替代@Data。

  3. @NoArgsConstructor@AllArgsConstructor 和 @RequiredArgsConstructor:这三个注解用于生成类的构造函数。@NoArgsConstructor生成一个无参构造函数,@AllArgsConstructor生成一个包含所有字段的构造函数,@RequiredArgsConstructor生成一个包含final和非null字段的构造函数。

  4. @Log4j 或 @Slf4j:这些注解用于在类中生成日志对象,方便进行日志记录。

  5. @Builder:这个注解用于生成构建者模式的代码,使得对象构建更加灵活和易读。

  6. @Cleanup:这个注解用于自动管理资源,它会在try语句块结束后自动关闭实现了AutoCloseable或Closeable接口的资源。

  7. @SneakyThrows:这个注解用于在方法上抛出异常,而不需要在方法签名中显式声明。

  8. @Accessors:这个注解用于修改getter和setter方法的默认行为,比如链式调用、设置字段访问级别等。

  9. @Value:类似于@Data注解,但它会将所有字段默认为final修饰,并且不会生成setter方法。

  10. @ToString:这个注解用于生成类的toString方法,用于返回对象的字符串表示形式。它会自动包含类的所有字段。

  11. @EqualsAndHashCode:这个注解用于生成类的equals方法和hashCode方法。默认情况下,它会使用类的所有非静态和非瞬态字段进行比较。也可以指定只使用某些字段。

  12. @NonNull:这个注解用于字段或方法参数上,用于确保该字段或参数在运行时非空。如果为null,则会抛出NullPointerException。

  13. @Synchronized:这个注解用于方法上,为方法提供同步锁,类似于synchronized关键字的功能。

  14. @Wither:这个注解用于生成一个返回当前对象副本的新方法,但其中一个字段的值被替换。

  15. @Experimental:这个注解用于标记某些可能还在实验阶段的特性或API,以提醒使用者注意。

四、Spring AOP相关注解

  1. @Aspect:用于定义一个切面类。切面类通常包含一些通知(Advice)和切点(Pointcut)的定义,用于在程序的特定位置插入横切关注点(cross-cutting concerns)的代码。

  2. @Pointcut:用于定义一个切点,即程序中需要插入切面代码的位置。切点通常与特定的方法调用、异常抛出等动作相关联。标准的Aspectj Aop的pointcut的表达式类型是很丰富的,但是Spring Aop只支持其中的9种,外加Spring Aop自己扩充的一种一共是10种类型的表达式,分别如下。

    execution:一般用于指定方法的执行,用的最多。
    within:指定某些类型的全部方法执行,也可用来指定一个包。
    this:Spring Aop是基于代理的,生成的bean也是一个代理对象,this就是这个代理对象,当这个对象可以转换为指定的类型时,对应的切入点就是它了,Spring Aop将生效。
    target:当被代理的对象可以转换为指定的类型时,对应的切入点就是它了,Spring Aop将生效。
    args:当执行的方法的参数是指定类型时生效。
    @target:当代理的目标对象上拥有指定的注解时生效。
    @args:当执行的方法参数类型上拥有指定的注解时生效。
    @within:与@target类似,看官方文档和网上的说法都是@within只需要目标对象的类或者父类上有指定的注解,则@within会生效,而@target则是必须是目标对象的类上有指定的注解。而根据笔者的测试这两者都是只要目标类或父类上有指定的注解即可。
    @annotation:当执行的方法上拥有指定的注解时生效。
    bean:当调用的方法是指定的bean的方法时生效。

  3. @Before:用于定义前置通知。前置通知会在切点方法执行之前执行,通常用于执行一些前置逻辑,如日志记录、权限校验等。

  4. @After:用于定义后置通知。后置通知会在切点方法执行之后执行,无论方法执行是否成功。它通常用于执行一些清理工作或记录方法执行后的状态。

  5. @AfterReturning:用于定义返回通知。返回通知会在切点方法正常执行完毕后执行,通常用于处理方法的返回值或执行一些后置逻辑。

  6. @AfterThrowing:用于定义异常通知。异常通知会在切点方法抛出异常时执行,通常用于处理异常或记录异常信息。

  7. @Around:用于定义环绕通知。环绕通知会包围切点方法的执行,可以在方法执行前后插入自定义的逻辑,甚至控制方法是否执行。

  8. @Order:这个注解用于定义组件(包括切面)的执行顺序。在AOP中,它特别用于指定切面的执行顺序。通过给@Order注解提供一个整数值(通常是负数或正数),你可以控制多个切面之间的优先级。值越小,优先级越高,切面将越先执行。

    例如,如果你有两个切面A和B,并且你想让切面A在切面B之前执行,你可以给切面A的@Order注解分配一个比切面B更小的值。

五、meta-annotation(元注解

他们分别是:@Target,@Reteniton,@Documented,@Inherited.我们可以使用这4个元注解来对我们自定义的注解类型进行注解

  1. @Target注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方)

  2. @Reteniton注解的作用是:描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时)。

  3. @Documented注解的作用是:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。

  4. @Inherited注解的作用是:使被它修饰的注解具有继承性(如果某个类使用了被Inherited修饰的注解,则其子类将自动具有该注解。

六、Swagger相关注解

  1. @Api:用于描述API接口的基本信息。

    • value:接口名称,必填项。
    • description:接口描述,非必填项。
    • tags:接口标签,用于对接口进行分类,非必填项。
    • notes:接口说明,非必填项。
    • response:接口返回结果。
  2. @ApiOperation:用于描述API接口的操作。

    • value:操作的简要说明。
    • notes:操作的详细说明。
    • response:返回的对象类型。
  3. @ApiImplicitParam:用于描述单个请求参数。

    • name:参数名。
    • value:参数的简要说明。
    • required:参数是否必须。
    • dataType:参数类型。
    • paramType:参数所在位置(如path、query等)。
  4. @ApiImplicitParams:用于描述多个请求参数,包含多个@ApiImplicitParam注解。

  5. @ApiResponses:用于描述API接口可能返回的响应。

  6. @ApiResponse:用于描述API接口的一个响应。

    • code:响应码。
    • message:响应消息。
    • response:响应对象类型。
  7. @ApiModel:用于描述一个API数据模型。

    • value:模型的名称。
    • description:模型的描述。
  8. @ApiModelProperty:用于描述API数据模型的属性。

    • value:属性的简要说明。
    • name:属性名。
    • dataType:属性类型。
    • required:属性是否必须。
    • example:属性值的示例。

六、其他常用注解

  1. @Override: 表明该方法覆盖了父类中的方法。
  2. @FunctionalInterface: 表明一个接口是函数式接口,只能有一个抽象方法。
  3. @interface注解@interface不是接口是注解类,在jdk1.5之后加入的功能,使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口。

    在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。

  4. @return:通常出现在方法的文档注释中,用于说明方法的返回值,并非Java的一个注解,而是Javadoc的一部分。
  5. @Dict主要是实现 字符的转换,给前端提供想要的数据。dicCode = "主键",dictTable = "表名",dicText = "显示的字段名"
  6. @JsonFormat是在Jackson中定义的一个注解,是一个时间格式化注解。此注解用于属性上,作用是把DATE类型的数据转化成为我们想要的格式。
  7. @Description、@Author、@Date开头的注解分别表示提供记录的一般说明、标记作者信息、标记日期信息。
  8. @version乐观锁注解,用于版本控制。
  9. @Excel 导出excel,一个列,是easyPOI里的注解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android ParcelFileDescriptor实现进程间通信

需求 一个通信通道,实现跨进程的的Socket网络通信。 具体的通信通道的图如下。 需求分析 我们需要一个进程一直做通信通道的事情,业务进程把数据通过进程间通信交给通信进程。通信进程通过Socket通道将数据发给网络另外一端的通信进程。接收端的通信进…

对常见FTP客户端/服务器的调查与分析

前言 主要是想看看常见的服务器和客户端是如何实现协议中要求的功能的,。 比如RF959要求的记录结构(Record Structure)、页结构(Page Structure)、Block Mode、Compress Mode,看起来就很抽象。 实测发现…

vue 上传csv文件

index---------主页面(图1) form-----------子页面(图2) index.vue /** 重点!!!! * 获取表单组件传递的信息,传给后端接口 * param {从form表单传递的数据} datas * Fi…

【进阶六】Python实现SDVRPTW常见求解算法——离散粒子群算法(DPSO)

基于python语言,采用经典离散粒子群算法(DPSO)对 带硬时间窗的需求拆分车辆路径规划问题(SDVRPTW) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整2.1 需求拆分2.2 需求拆分后的服务时长取值问题 3. 求解结果4. …

关于运行阿里云直播Demo报的错

flutter --version dart --version 如何使用Flutter框架推流_音视频终端 SDK(Apsara Video SDK)-阿里云帮助中心MediaBox音视频SDK下载指南_音视频终端 SDK(Apsara Video SDK)-阿里云帮助中心 终端输入 dart pub --trace get --no-precompile 打印详细报错信息 详细咨询…

docker搭建Lazylibrarian

Lazylibrarian 是一个自动化工具,主要用于追踪作者和获取数字阅读材料的元数据。它结合了 Goodreads、LibraryThing 等社交阅读平台的功能,并支持与 Calibre、Calibre-Web 等电子书管理软件的集成,为用户提供了一个全面的电子书管理和阅读解决…

不再写满屏import导入

密密麻麻的import语句不仅仅是一种视觉上的冲击,更是对代码组织结构的一种考验。 我们是如何做到让import“占领满屏“的了,又该如何优雅地管理这些import语句呢? 本文将从产生大量import语句的原因、可能带来的问题以及如何优化和管理impo…

最优算法100例之47-从尾到头打印单链表

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 从尾到头打印单链表 题解报告 方法1:头插法逆置单链表然后依次打印;注意此处是不带头结点的单链表,带头节点的操作稍微有…

Linux 网络排查命令

端口相关服务检查 netstat -ntpl|grep [$Port]说明:[$Port]为相应的端口号。 0.0.0.0代表本机上可用的任意地址。比如,0.0.0.0:80表示本机上所有地址的80端口。 tcp 0.0.0.0:80表示在所有的可用接口上监听TCP的80端口 如果返回结果为空,说明…

Python | Leetcode Python题解之第29题两数相除

题目: 题解: class Solution:def divide(self, dividend: int, divisor: int) -> int:INT_MIN, INT_MAX -2**31, 2**31 - 1# 考虑被除数为最小值的情况if dividend INT_MIN:if divisor 1:return INT_MINif divisor -1:return INT_MAX# 考虑除数为…

ubuntu安装向日葵远程软件

下载链接: https://sunlogin.oray.com/download/linux?typepersonal安装命令:sudo dpkg -i 文件名.deb 启动命令:/usr/local/sunlogin/bin/sunloginclient 卸载命令:sudo dpkg -r sunloginclient 缺少依赖包,先使…

基于Node.js、Spring MVC和Python的WebSocket服务器实现对比

一、引言 随着网络技术的飞速发展,实时通信在现代Web应用中变得越来越重要。WebSocket协议作为一种在单个连接上进行全双工通信的协议,已经成为实现实时Web应用的关键技术之一。WebSocket服务器在这里扮演着重要角色,它能够处理并维持与客户…

Spring ORM

Spring Data JPA 作为Spring Data 中对于关系型数据库支持的一种框架技术,属于 ORM 的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度。 Java里面写的一段DB操作逻辑,是如何一步步被传递到 DB 中执行了的呢?为什么 Java 里面可以去对接不同产商的 DB 产…

仿真测试平台设计资料:921-6U CPCI卫星接口仿真测试平台

6U CPCI卫星接口仿真测试平台 一、设备概述 卫星接口仿真测试平台基于6U CPCI的结构,包含信号接口前板、后板,计算机主板、机箱、电源等硬件。硬件设计包括:信号接口前板、后板(直接遥测遥控、串行RS422、LVDS,模拟量输…

深入剖析Python中的上下文管理协议及自定义上下文管理器实践

深入剖析Python中的上下文管理协议及自定义上下文管理器实践 引言 在Python编程实践中,上下文管理协议(Context Manager Protocol)是一种强大的工具,它通过简洁优雅的“with”语句帮助我们实现资源获取、使用和释放的自动化管理。这种设计模式大大提高了…

Unity类银河恶魔城学习记录12-13 p135 Merge Skill Tree with Dogge skill源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili​​​​​​​ Inventory.cs using System.Collections.Generic; using Un…

【C++】每日一题 54 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] #include <iostream> #include <vector>…

基于springboot实现房屋租赁管理系统设计项目【项目源码+论文说明】

基于springboot实现房屋租赁管理系统设计演示 摘要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对房屋租赁信息管理混乱&…

[尚硅谷flink] 检查点笔记

在Flink中&#xff0c;有一套完整的容错机制来保证故障后的恢复&#xff0c;其中最重要的就是检查点。 文章目录 11.1 检查点11.1.1 检查点的保存1&#xff09;周期性的触发保存2&#xff09;保存的时间点3&#xff09;保存的具体流程 11.1.2 从检查点恢复状态11.1.3 检查点算法…

解读宁波TISAX:保障企业安全的关键

&#x1f352;宁波TISAX&#xff0c;❣️作为信息安全领域的&#x1f92d;重要认证体系&#xff0c;为企业&#x1f41e;提供了强大的&#x1f349;安全保障。&#x1f40b;TISAX&#xff0c;&#x1f697;全称为Trusted Information Security Assessment Exchange&#xff0c;…