Springboot项目中常用注解

文章目录

    • Springboot相关注解
      • @EnableAspectJAutoProxy(exposeProxy = true)
        • 内部实现机制
      • @EnableTransactionManagement
      • @ServletComponentScan
      • @MapperScan(basePackages = {"com.xxx.mapper"})
      • @ComponentScan(basePackages={"*"})
      • lombok @Data注解
      • Controller中的相关注解
        • @Controller
        • @RestController
        • @RequestMapping
        • @ResponseBody
        • @RequestBody
        • @RequestParam
        • @PathVariable
        • @Validated

Springboot相关注解

@EnableAspectJAutoProxy(exposeProxy = true)

用于启用AspectJ自动代理功能的注解。它通常与Spring AOP一起使用,以在Spring应用程序中实现切面功能。

内部实现机制

当我们在配置类上添加@EnableAspectJAutoProxy注解时,Spring会通过@Import注解导入AspectJAutoProxyRegistrar类。
AspectJAutoProxyRegistrar类实现了ImportBeanDefinitionRegistrar接口,该接口允许开发人员动态地注册Bean定义。在AspectJAutoProxyRegistrar类中,它会注册一个名为AnnotationAwareAspectJAutoProxyCreator的Bean,这个Bean是Spring AOP的核心组件之一。
AnnotationAwareAspectJAutoProxyCreator是一个Bean后置处理器(BeanPostProcessor),它会在Spring容器初始化Bean之后对其进行处理。如果该Bean匹配某个切点表达式,AnnotationAwareAspectJAutoProxyCreator会为其创建一个代理对象,并将切面逻辑织入到该代理对象中。

@EnableTransactionManagement

用于启用基于注解的事务自动管理,可以在方法上添加@Transactional注解来声明事务。当你在配置类上使用 @EnableTransactionManagement 注解时,Spring框架会自动扫描带有 @Transactional 注解的方法,并在这些方法周围织入事务管理的逻辑。如果一个带有 @Transactional 注解的方法执行过程中出现了异常,Spring会自动回滚事务。这个注解的作用是简化事务管理的配置和使用,提高开发效率。
https://blog.csdn.net/Tanganling/article/details/134378603
@SpringBootApplication

@ServletComponentScan

用于启用对servlet组件的扫描,servlet三大组件 Servlet、Filter、Listener 在传统项目中需要在 web.xml 中进行相应的配置,spring使用三个注解@WebServlet、@WebFilter、@WebListener 写在对应的 Servlet、Filter、Listener 类上作为标识,从而不需要在 web.xml 中进行配置了。
但Springboot默认不对这三个注解进行扫描,需要在配置类上增加@ServletComponentScan这个注解。

@MapperScan(basePackages = {“com.xxx.mapper”})

用于开启Mybatis,
https://blog.csdn.net/qq_42187215/article/details/132650985

@ComponentScan(basePackages={“*”})

lombok @Data注解

通过注解的方式在编译期自动生成‌getter、setter方法、toString方法、equals方法和hashCode方法等常用方法,从而减少模板代码的编写。@Data注解是Lombok提供的一个复合注解,它结合了@Getter、@Setter、@ToString、@EqualsAndHashCode等多个注解的功能,使得开发者可以更加专注于业务逻辑的实现,而不是重复编写一些通用的代码。

Controller中的相关注解

@Controller

控制层注解,标识在类上,返回view

@RestController

同@Controller,返回json数据

@RequestMapping

标识在类或者方法上,表示访问地址,提供路由信息,URL和Controller的映射,是@GetMapping/@PostMapping的Get/Post的集合。
@GetMapping(value = “hello”) 等价于@RequestMapping(value = “hello”, method = RequestMethod.GET)

@ResponseBody

该注解的作用是将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。
当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串,然后写到客户端。
@Controller+@ResponseBody等于@RestController。

@RequestBody

作用于方法参数上,将请求参数绑定到request body中,通过HttpMessageConverter封装为具体的JavaBean。通俗点讲就是你在一个参数上加上该注解,spring就会将request body中的json/xml对象解析成该参数类型的Javabean对象。

@RequestParam

作用于方法参数上,将请求参数映射成指定类型

@PathVariable

作用于方法参数上,通过解析url中的占位符进行参数获取

@Validated

作用在类、方法和参数上,对传输的参数进行数据校验的注解实现对数据的约束,结合以下注解完成对数据的约束
数据校验

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

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

相关文章

基础设施即代码(IaC):自动化基础设施管理的未来

随着云计算和大规模分布式系统的迅速发展,手动管理和配置基础设施的传统方式已逐渐跟不上快速迭代的步伐。于是,基础设施即代码(Infrastructure as Code,IaC)作为一种创新实践,成为现代运维管理的基础。IaC不仅提高了基础设施的配置速度,还提升了系统的一致性和可重复性…

Spring Cloud 微服务综述 | 含服务调用最佳实践

Spring微服务架构综述 微服务是一种架构风格,它将单一应用程序拆分为一组小型、独立的服务,每个服务实现特定的业务功能,并且可以独立部署。在Spring生态系统中,提到Spring微服务通常是指利用Spring Cloud框架进行开发。Spring C…

jvm虚拟机介绍

Java虚拟机(JVM)是Java语言的运行环境,它基于栈式架构,通过加载、验证、准备、解析、初始化等类加载过程,将Java类文件转换成平台无关的字节码,并在运行时动态地将其翻译成特定平台的机器码执行。 JVM的核心…

Java全栈经典面试题剖析8】JavaSE高级 -- 线程同步、 线程通信、死锁、线程池

目录 面试题3.44 多线程的同步方式 面试题3.45 多线程安全问题怎么解决 面试题3.46 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 面试题3.47 简述synchronized与java.util.concurrent.locks.Lock的异同&#xff…

基于SSM农业信息管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,农业技术管理,种植户管理,农产品类型管理,农资订单管理,系统管理 种植户账号功能包括:系统首页,个人中心&a…

01C++书写hello world、注释、变量、常量

#include <iostream> using namespace std; int main()//main为一个程序的入口&#xff0c;每个程序都必须仅有一个 { cout<<"hello world"<<endl; } //#输出结果为 //单行注释的符号 /* 多行注释的符号 */ //变量创建的语法&#xff1a;数据类…

OpenAI GPT-o1实现方案记录与梳理

本篇文章用于记录从各处收集到的o1复现方案的推测以及介绍 目录 Journey Learning - 上海交通大学NYUMBZUAIGAIRCore IdeaKey QuestionsKey TechnologiesTrainingInference A Tutorial on LLM Reasoning: Relevant methods behind ChatGPT o1 - UCL汪军教授Core Idea先导自回归…

shodan2---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 实验一&#xff1a;search 存在CVE-2019-0708的网络设备 CVE - 2019 - 0708**漏洞&#xff1a;** 该漏洞存在于远程桌面…

offset Explorer连接云服务上的kafka连接不上

以上配置后报连接错误时&#xff0c;可能是因为kafka的server.properties配置文件没配置好&#xff1a; 加上面两条配置&#xff0c;再次测试连接&#xff0c;成功 listeners和advertised.listeners

Xshell远程连接工具详解

Xshell是一款在Windows平台上运行的远程连接工具&#xff0c;它支持SSH1、SSH2以及Microsoft Windows平台的TELNET协议。Xshell通过互联网实现对远程主机的安全连接&#xff0c;帮助用户在复杂的网络环境中享受他们的工作。本文将详细介绍Xshell的溯源、最新版本以及它的优势。…

C++的相关习题(2)

初阶模板 下面有关C中为什么用模板类的原因&#xff0c;描述错误的是? ( &#xff09; A.可用来创建动态增长和减小的数据结构 B.它是类型无关的&#xff0c;因此具有很高的可复用性 C.它运行时检查数据类型&#xff0c;保证了类型安全 D.它是平台无关的&#xff0c;可移植…

springboot连接两个数据源,来回切换数据不能保存? 换事务

springboot连接两个数据源&#xff0c;来回切换数据不能保存&#xff1f; 解决方案 换事务 import org.springframework.transaction.annotation.Transactional; Transactional(propagation Propagation.REQUIRED, isolation Isolation.READ_COMMITTED)换为 import com.ba…

Vue.js 组件开发教程:从基础到进阶

Vue.js 组件开发教程:从基础到进阶 引言 在现代前端开发中,Vue.js 作为一款流行的 JavaScript 框架,以其简单易用和灵活性赢得了开发者的青睐。Vue 组件是 Vue.js 的核心概念之一,理解组件的开发和使用对构建复杂的用户界面至关重要。本篇文章将详细介绍 Vue.js 组件的开…

NFS练习

一、实验目的 1、开放/nfs/shared目录&#xff0c;供所有用户查询资料 2、开放/nfs/upload目录&#xff0c;为192.168.xxx.0/24网段主机可以上传目录&#xff0c; 并将所有用户及所属的组映射为nfs-upload,其UID和GID均为210 3、将/home/tom目录仅共享给192.168.xxx.xxx这台…

MySQL全文索引检索中文

MySQL全文索引检索中文 5.7.6版本不支持中文检索&#xff0c;需要手动修改配置 ft_min_word_len 1 &#xff0c;因为默认配置 4 SHOW VARIABLES LIKE ft%; show VARIABLES like ngram_token_size;配置 修改 MySQL 配置文件 vim /etc/my.cnf在配置的 [mysqld] 下面添加**ft_…

C++——string的模拟实现(上)

目录 引言 成员变量 1.基本框架 成员函数 1.构造函数和析构函数 2.拷贝构造函数 3.容量操作函数 3.1 有效长度和容量大小 3.2 容量操作 3.3 访问操作 (1)operator[]函数 (2)iterator迭代器 3.4 修改操作 (1)push_back()和append() (2)operator函数 引言 在 C—…

【C++单调栈 贡献法】907. 子数组的最小值之和|1975

本文涉及的基础知识点 C单调栈 LeetCode907. 子数组的最小值之和 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 109 7 。 示例 1&#x…

多eSIM配置文件(MEP)

根据在fediverse上的一个回复&#xff0c;Google Pixel 7和8都应该支持MEP&#xff08;多eSIM配置文件&#xff09;。这一信息在Reddit上的一个帖子中似乎得到了确认&#xff0c;该帖子讨论了eSIM MEP和双eSIM功能。 如果您想进一步研究并检查是否可以通过DIAG&#xff08;诊断…

RabbitMQ是一个开源的消息代理和队列服务器

RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;它基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;协议实现&#xff0c;同时也支持其他消息协议如STOMP、MQTT等。作为一个可靠的消息传递服务&#xff0c;RabbitMQ在分…

NtripShare Cloud平台之CORS服务之基准站RTCM坐标编辑

最近有点累&#xff0c;一直在摸鱼&#xff0c;想在平差方面做点事情&#xff0c;但是一直在构思应该怎么去做&#xff0c;有想法的朋友可以交流。 收到了TW和国内顶尖测绘行业朋友的需求&#xff1a; 1、将NtripShare Cloud的CORS服务模块由单基站模块改为VRS。 2、由于电离…