SpringBoot:注解详解

@RequestMapping

注解在类上:表示该类中所有响应请求的方法都以此地址为父路径

value(path) 指定请求的实际访问地址,默认@RequestMapping(“url”)的值url即为value的值。指定的地址可以是 URI Template 模式。
method 指定请求的method类型,主要有 GET、POST、DELETE、PUT等;
params 指定request中必须包含某些参数值,包含才让该方法处理请求。
headers 指定request中必须包含某些指定的header值,包含才能让该方法处理请求。
consumes 指定处理请求的提交内容类型(Content-Type),例如:application/json, text/html;
produces 指定返回的内容类型,当且仅当request请求头中的(Accept)类型中包含该指定类型才返回;

@RequestMapping("/emps")
public interface EmpController

注解在方法上:表示映射请求路径的具体信息,即访问该方法的访问路径为注解的value值

可以被以下这些注解替代

@GetMapping

使用get方式请求

get请求注解主要用于增删改查的查

@PutMapping

使用put方式请求

put请求注解主要用于增删改查的改

@DeleteMapping

使用delete方式请求

delete请求注解主要用于增删改查的删

@PostMapping

使用post方式请求

post请求注解主要用于增删改查的增

@RequestMapping("/testRequestMapping")public String testRequestMapping(){return "success";}
@RequestParam

将请求参数绑定到控制器的方法参数上

@RequestParam("映射参数")
@DateTimeFormat

日期格式化转换参数

将日期类型的数据以pattern形式解析

@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin
@RequestBody

用对象形式接收JSON类型参数

Result insert(@RequestBody Emp emp);
@PathVariable

用指定类型来接收写在路径中的参数

@DeleteMapping("/{ids}")
Result delete(@PathVariable List<Integer> ids);
@ResponseBody

包含在@RestController中

如果没有这个注解,控制类的返回值会解析为跳转一个路径

加了注解后如果返回对象会解析为json

如果返回字符串会返回字符串

返回在响应体中

@ResponseBody
@RequestMapping(value = "/loginIn", produces = "application/json;charset=UTF-8")
public Object login(UserBean user)
@Component 声明bean的基础注解,将该类的对象交给 IOC 容器管理
@Controller ‘@Component’ 的衍生注解, 标注在控制层类上
@Service ‘@Component’ 的衍生注解, 标注在业务层类上
@Repository ‘@Component’ 的衍生注解, 标注在持久层类上

以上注解功能一样,都是标记一个类为组件,让spring在程序启动时扫描并加载这些组件,将这些类的对象交给IOC管理,在其他类中可以使用@Autowired注入

@Autowired 用来获取 IOC 容器中管理的对象,获取的是对象所在实现类实现的接口类型
@Service
public class DeptServiceImpl implements DeptService 
@Autowired
DeptService deptService;
@ComponentScan

包含在@SpringBootApplication中,在启动类上注解

批量注册bean,默认扫描注解修饰的类所在的包,默认对

@Component 声明bean的基础注解,将该类的对象交给 IOC 容器管理
@Controller ‘@Component’ 的衍生注解, 标注在控制层类上
@Service ‘@Component’ 的衍生注解, 标注在业务层类上
@Repository ‘@Component’ 的衍生注解, 标注在持久层类上

带有这些注解的类进行扫描,交给IOC容器管理

@SpringBootApplication
@ServletComponentScan
public class TliasApplication {public static void main(String[] args) {SpringApplication.run(TliasApplication.class, args);}}
@Primary

设置多个相同接口的实现类对象中的一个为主要对象,注入时会优先注入此对象

@Primary
@Service
public class EmpServiceImpl implements EmpService
@Qualifier

和@Component及其衍生注解一起使用对提交给IOC的对象进行标注

@Service
@Qualifier("test")
public class EmpServiceImpl implements EmpService 

和@Autowired一起使用对被标注的对象进行注入

@Autowired
@Qualifier("test")
EmpService empService;
@Resource

与@Qualifier类似,但@Qualifier由Spring提供且在value属性中标记,而@Resource由Java提供且在name属性中标记

@Service
@Resource(name = "test")
public class EmpServiceImpl implements EmpService 
@Data

由lombok工具类库提供

自动实现类的get、set、equals、hashCode、toString方法

@NoArgsConstructor

lombok下给实体类生成空参构造

@AllArgsConstructor

lombok下给实体类生成全参构造

@Param

在mapper层中将参数进行映射到sql语句中

@Select("select * from emp where id = #{id}")
Emp selectById(@Param("id") Integer id);
@ConfigurationProperties

将配置文件封装成实体类,需要时直接使用@Autowired注入使用

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss") //指定配置文件
public class AliOSSProperties {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;
}
@Value

将配置文件中的属性注入

@Value("${aliyun.oss.endpoint}")
private String endpoint;
@ServletComponentScan

在启动类上加此注解可以令Servlet,Filter,Listener三大组件直接通过@WebServlet,@WebFilter,@WebListener注解自动注册,无需其他代码

@SpringBootApplication
@ServletComponentScan
public class TliasApplication
@RestControllerAdvice

ControllerAdvice+ResponseBody

@Transactional

使方法被事务管理

@Aspect

声明切面类

@Order(数字)

控制通知的顺序,方法执行前按升序执行,方法执行后按降序执行,类似于栈结构

@Around

//此注解标注的通知方法在目标方法前后都执行
//需要自己调用ProceedingJoinPoint.proceed()方法来让目标方法执行

@Before

//此注解标注的通知方法在目标方法前被执行

@After

//此注解标注的通知方法在目标方法后被执行,无论是否存在异常
(在finally块中)

@AfterReturning

//同上,但有异常时不会执行,后于@After执行

@AfterThrowing

//在发生异常后执行

通知注解的属性:
execution

上述注解的属性,通过((访问修饰符) 返回值 包名.类名.方法名(方法参数) throws 异常)来对方法进行匹配,和@annotation 功能类似

@annotation()

匹配方法上的注解(需要自己自定义注解,将全限定名写在括号中)

@annotation通过方法上的注解进行过滤

args()

匹配方法的参数类型

@Around("@annotation(appendAnnotation) && args(Integer)")
@annotation(com.itheima.anno.Log)
@PointCut

通过@PointCut注解,可以抽取一个切入点表达式,然后在其他的地方就可以通过类似于方法调用 的形式来引用该切入点表达式

    @Pointcut("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")public void pt(){}@Around("pt()")public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable {long begin = System.currentTimeMillis();//调用原始操作Object result = joinPoint.proceed();long end = System.currentTimeMillis();log.info("执行耗时 : {} ms", (end-begin));return result;}

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

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

相关文章

数据结构(四)——二叉树和堆(下)

制作不易&#xff0c;三连支持一下呗&#xff01;&#xff01;&#xff01; 文章目录 前言一、二叉树链式结构的实现总结 前言 这篇博客我们将来了解普通二叉树的实现和应用&#xff0c;对大家之前分治和递归的理解有所挑战。 一、二叉树链式结构的实现 1.前置说明 在学习二叉…

Java入门——继承和多态(上)

包 包是组织类的一种方式. 使用包的主要目的是保证类的唯一性. 例如, 你在代码中写了一个 Test 类. 然后你的舍友也可能写一个 Test 类. 如果出现两个同名的类, 就会冲突, 导致 代码不能编译通过. 导入包中的类 Java 中已经提供了很多现成的类供我们使用. 例如 public cla…

服装店会员管理系统结合小程序商城帮你挖掘出潜在客户

在现代社会&#xff0c;随着科技的不断进步和人们消费习惯的变化&#xff0c;传统的服装店已经不再能够满足消费者的需求。为了更好地服务客户&#xff0c;提升销售业绩&#xff0c;许多服装店开始引入会员管理系统&#xff0c;并结合小程序商城&#xff0c;实现线上线下的无缝…

LeetCode-2079. 给植物浇水【数组 模拟】

LeetCode-2079. 给植物浇水【数组 模拟】 题目描述&#xff1a;解题思路一&#xff1a;简单的模拟题&#xff0c;初始化为0&#xff0c;考虑先不浇灌每一个植物解题思路二&#xff1a;初始化为n&#xff0c;考虑每一个植物需要浇灌解题思路三&#xff1a;0 题目描述&#xff1a…

在ubuntu安装Docker容器

1、进入root用户模式 sudo -i 回车后&#xff0c;输入root的密码即可进入root模式2、在ubuntu上安装docker &#xff08;1&#xff09;直接使用 apt 安装&#xff0c;一般这样也自动启动好了 apt install docker.io3、验证安装成功&#xff0c;以及启动与校验 &#xff08;…

C++11:常用语法汇总

目录 &#x1f341;统一的列表初始化 { }initializer_list &#x1f341;decltype 推导表达式类型&#x1f341;可变参数模板解析可变参数包方法一方法二 &#x1f341;lambda 表达式捕捉列表的使用运用场景举例lambda表达式 与 函数对象 &#x1f341;统一的列表初始化 { } 在…

STM32F407-驱动SHT41采集温湿度

STM32F407-驱动SHT41采集温湿度 SHT41 SHT41通过I2C方式进行驱动 从机地址&#xff1a; 0x44 获取数据方式 1&#xff09;先发送I2C写&#xff0c;写入特定指令 2&#xff09;延时一段时间&#xff0c;等待SHT41处理 3&#xff09;再进行I2C读&#xff0c;读数据即可 一些…

Ansible(二)

一、Playbook基础 1.1 Playbook定义 Playbook其实是Ansible服务的一个配置文件&#xff0c;Ansible使用Playbook的YAML语言配置编写成操作需求&#xff0c;实现对远端主机或策略部署&#xff0c;实现对远端主机的控制与管理。 1.2 Playbook组成 Tasks&#xff1a;任务&…

【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout 文章编号&#x…

skynet - spinlock 简单的自旋锁

spinlock.h 代码位于&#xff1a; https://github.com/cloudwu/skynet/blob/master/skynet-src/spinlock.h 该文件内&#xff0c;根据不同环境提供了 3 种 api 实现&#xff1a; pthread_mutex_t 系列函数gcc 内置原子操作函数std atomic 系列函数 看了下&#xff0c;效率最…

渗透测试-信息收集

网络安全信息收集是网络安全领域中至关重要的一环&#xff0c;它涉及到对目标系统、网络或应用进行全面而细致的信息搜集和分析。这一过程不仅有助于理解目标网络的结构、配置和潜在的安全风险&#xff0c;还能为后续的渗透测试、风险评估和安全加固提供有力的支持。 在网络安…

安卓开发--新建工程,新建虚拟手机,按键事件响应(含:Android中使用switch-case遇到case R.id.xxx报错)

安卓开发--新建工程&#xff0c;新建虚拟手机&#xff0c;按键事件响应 1.前言2.运行一个工程2.1布局一个Button2.2 button一般点击事件2.2 button属性点击事件2.2 button推荐点击事件&#xff08;含&#xff1a;Android中使用switch-case遇到case R.id.xxx报错&#xff09; 本…

MATLAB 多项式

MATLAB 多项式 MATLAB将多项式表示为行向量&#xff0c;其中包含按幂次降序排列的系数。例如&#xff0c;方程P(x) X 4 7 3 - 5 9可以表示为 p [1 7 0 -5 9]; 求值多项式 polyval函数用于求一个特定值的多项式。例如&#xff0c;在 x 4 时&#xff0c;计算我们之前的多项式…

HTTP URL 详解

概述 URL 提供了一种定位因特网上任意资源的手段&#xff0c;大多数 URL 语法都由以下九个结构的通用格式组成&#xff1a; <scheme>://<user>:<password><host>:<port>/<path>;<params>?<query>#<frag> 方案&#…

命令重装Linux系统,无需登录控制面板

命令重装Linux系统&#xff0c;无需登录控制面板 部分无法登录控制面板使用这个脚本 自动安装安装脚本 wget https://lyvba.com/auto.sh bash auto.sh -d 12 -v 64 -a -p $passwd \--mirror https://mirrors.ustc.edu.cn/debian/安装命令参考 # 自动安装 Debian 10 buster …

基于YOLOV8复杂场景下船舶目标检测系统

1. 背景 海洋作为地球上70%的表面积&#xff0c;承载着人类生活、经济发展和生态系统的重要功能。船舶作为海洋活动的主要载体之一&#xff0c;在海上运输、资源开发、环境监测等方面发挥着重要作用。复杂海洋环境下的船舶目标检测成为了海事管理、海洋资源开发和环境保护等领…

人工智能轨道交通行业周刊-第79期(2024.4.22-5.12)

本期关键词&#xff1a;无人机巡检、车机联控、减速顶、Agent、GraphRAG、RAGFlow 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界铁路那…

2024OD机试卷-API集群负载统计 (java\python\c++)

题目:API集群负载统计 题目描述 某个产品的RESTful API集合部署在 服务器 集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载 均衡,现在需要实现热点信息统计查询功能。 RESTful API是由多个层级构成,层…

《动手学深度学习》V2(11-18)

文章目录 十一、二 模型选择与过拟合和欠拟合1、模型的选择2、过拟合和欠拟合3、估计模型容量4、线性分类器的VC维5、过拟合欠拟合的代码实现 :fire:①生成数据集②定义评估损失③定义训练函数④三阶多项式函数拟合⑤线性函数拟合(欠拟合)⑤高阶多项式函数拟合(过拟合) 十三、权…

【C语言】精品练习题

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目八&#xff1a; 题目九&#xff1a; 题目十&#xff1a; 题目十一&#xff1a; 题目十二&#xff1a; 题目十…