springboot的常用注解

在这里插入图片描述

声明解释这个对象(类或者其他)组件相关

名称作用
@Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解,并为修饰的类实例化对象,通常与@RequestMapping联用,当SpringMVC获取到请求时会转发到指定路径的方法进行处理。声明 MVC中起到控制操作的,与Requestmap联用,相当于控制 处理请求,或者叫做请求入口
@Service用于修饰service层的组件,service层组件专注于系统业务逻辑的处理,同样会被组件扫描并生成实例化对象。服务层,也不叫做服务层吧,就是controller接收到请求之后,扔给这个修饰的进行处理
Repository用于修饰dao层的组件,dao层组件专注于系统数据的处理,例如数据库中的数据,同样会被组件扫描并生成实例化对象。声明是个DAO层组件
@Component用于修饰SpringBoot中的组件,会被组件扫描并生成实例化对象,修饰的类会修饰成bean。@Controller、@Service、@Repository都是特殊的组件注解。所有声明组件的祖先吧

依赖注入相关

名称作用
@Autowired会根据对象的类型自动注入依赖对象,默认要求注入对象实例必须存在,可以配置required=false来注入不一定存在的对象。修饰后,改对象就会被自动初始化注入了,这就是框架的神奇之处,底层原理发射
@Qualifier当同一个对象有多个实例可以注入时,使用@Autowired注解无法进行注入,这时可以使用@Qualifier注解指定实例的名称进行精确注入。用父类声明,子类实例化的时候,所以存在多个是咧

实例与生命周期相关注解

名称作用
@Bean用于修饰方法,标识该方法会创建一个Bean实例,并交给Spring容器来管理。用来声明其实一个bean,交给spring管理,其他就可以依赖注入了
@Scope用于声明一个SpringBean实例的作用域,作用域的范围有以下几种:singleton:单例模式,在Spring容器中该实例唯一,Spring默认的实例模式。 prototype:原型模式,每次使用实例都将重新创建。request:在同一请求中使用相同的实例,不同请求重新创建。session:在同一会话中使用相同的实例,不同会话重新创建
@Primary当同一个对象有多个实例时,优先选择该实例。
@PostConstruct用于修饰方法,当对象实例被创建并且依赖注入完成后执行,可用于对象实例的初始化操作。
@PreDestroy用于修饰方法,当对象实例将被Spring容器移除时执行,可用于对象实例持有资源的释放。

SpringMVC相关注解

名称作用
@RequestMapping可用于将Web请求路径映射到处理类的方法上,当作用于类上时,可以统一类中所有方法的路由路径,当作用于方法上时,可单独指定方法的路由路径。method属性可以指定请求的方式,如GET、POST、PUT、DELETE等@RequestBody表示方法的请求参数为JSON格式,从Body中传入,将自动绑定到方法参数对象中。
@ResponseBody表示方法将返回JSON格式的数据,会自动将返回的对象转化为JSON数据。
@RequestParam用于接收请求参数,可以是如下三种形式:query param:GET请求拼接在地址里的参数。form data:POST表单提交的参数。multipart:文件上传请求的部分参数。
@PathVariable用于接收请求路径中的参数,常用于REST风格的API。
@RequestPart用于接收文件上传中的文件参数,通常是multipart/form-data形式传入的参数。

配置相关注解

名称作用
@Configuration用于声明一个Java形式的配置类,SpringBoot推荐使用Java配置,在该类中声明的Bean等配置将被SpringBoot的组件扫描功能扫描到。
@EnableAutoConfiguration启用SpringBoot的自动化配置,会根据你在pom.xml添加的依赖和application-dev.yml中的配置自动创建你需要的配置
@ComponentScan启用SpringBoot的组件扫描功能,将自动装配和注入指定包下的Bean实例。
@SpringBootApplication用于表示SpringBoot应用中的启动类,相当于@EnableAutoConfiguration、@EnableAutoConfiguration和@ComponentScan三个注解的结合体。
@EnableCaching当添加Spring Data Redis依赖之后,可用该注解开启Spring基于注解的缓存管理功能。
@value用于注入在配置文件中配置好的属性,例如我们可以在application.yml配置如下属性:jwt:tokenHeader: Authorization #JWT存储的请求头 secret: mall-admin-secret #JWT加解密使用的密钥 expiration: 604800 #JWT的超期限时间(606024*7)tokenHead: 'Bearer ’ #JWT负载中拿到开头
@ConfigurationProperties用于批量注入外部配置,以对象的形式来导入指定前缀的配置,比如这里我们在application.yml中指定了secure.ignored为前缀的属性:
@Conditional用于表示当某个条件满足时,该组件或Bean将被Spring容器创建,下面是几个常用的条件注解。@ConditionalOnBean:当某个Bean存在时,配置生效。@ConditionalOnMissingBean:当某个Bean不存在时,配置生效。@ConditionalOnClass:当某个类在Classpath存在时,配置生效。@ConditionalOnMissingClass:当某个类在Classpath不存在时,配置生效。
@SpringBootApplication
public class HelloworldApplication {
	public static void main(String[] args) {
			SpringApplication.run(HelloworldApplication.class, args
		);
	}
}

数据库事务相关注解

名称作用
@EnableTransactionManagement启用Spring基于注解的事务管理功能,需要和@Configuration注解一起使用。
@Transactional表示方法和类需要开启事务,当作用与类上时,类中所有方法均会开启事务,当作用于方法上时,方法开启事务,方法上的注解无法被子类所继承。

全局异常处理注解

名称作用
@ControllerAdvice常与@ExceptionHandler注解一起使用,用于捕获全局异常,能作用于所有controller中。
@ExceptionHandler修饰方法时,表示该方法为处理全局异常的方法

AOP相关注解

名称作用
@Aspect用于定义切面,切面是通知和切点的结合,定义了何时、何地应用通知功能。
@Before表示前置通知(Before),通知方法会在目标方法调用之前执行,通知描述了切面要完成的工作以及何时执行。
@After表示后置通知(After),通知方法会在目标方法返回或抛出异常后执行。
@AfterReturning表示返回通知(AfterReturning),通知方法会在目标方法返回后执行。
@AfterThrowing表示异常通知(AfterThrowing),通知方法会在目标方法返回后执行。
@Around表示环绕通知(Around),通知方法会将目标方法封装起来,在目标方法调用之前和之后执行自定义的行为。
@Pointcut定义切点表达式,定义了通知功能被应用的范围。
@Order用于定义组件的执行顺序,在AOP中指的是切面的执行顺序,value属性越低优先级越高。

测试

名称作用
@SpringBootTest用于指定测试类启用Spring Boot Test功能,默认会提供Mock环境。
@Test指定方法为测试方法。
@RunWith用来指定测试类的运行器,也就是用什么方式来执行测试类中的测试方法。不同的运行器有不同的功能和特点
package com.weiz.helloworld.service;

import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
class UserServiceTest {

    @Autowired
    private UserService userService;


    @Test
    void findOne() {
        Assert.assertEquals("1002", userService.findOne());
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用友NC word.docx接口存在任意文件读取漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、产品介绍 用友 NC Cloud,大型企业数字化平台&#xff…

DC电源模块的常见故障有哪些?

BOSHIDA DC电源模块的常见故障有哪些? DC电源模块是电子设备中常见的电源供应模块,它可以将交流电转化为直流电供给设备使用。然而,由于长期的使用和外界环境等因素的影响,DC电源模块也会出现各种故障。下面我们来介绍一下常见的…

CentOS 7 虚拟机java项目部署tomcat

首先安装java环境 下载安装包:jdk-19_linux-x64_bin.tar.gz_免费高速下载|百度网盘-分享无限制 (baidu.com) 将安装包上传到虚拟机 解压 tar zxvf jdk-19_linux-x64_bin.tar.gz 移动文件到 mv jdk-19.0.1 /usr/jdk-19.0.1 编辑配置文件 vim /etc/profile export JAVA…

卷积神经网络中用1*1 卷积有什么作用或者好处呢?

一、来源:[1312.4400] Network In Network (如果11卷积核接在普通的卷积层后面,配合激活函数,即可实现network in network的结构) 二、应用:GoogleNet中的Inception、ResNet中的残差模块 三、作用&#x…

16、fixture的其它使用特点

官方实例 # content of test_use_more_fixture.py import pytest# Arrange pytest.fixture def first_entry():return "a"# Arrange pytest.fixture def second_entry():return 2# Arrange pytest.fixture def order(first_entry, second_entry):return [first_entr…

Ubuntu20.04安装向日葵、开机自启、解决windows系统远程黑屏(笔记)

这里写目录标题 动机1. Ubuntu20.04 安装向日葵2. 设置开机自启3. 解决windows不可远程的问题4. 大公告成 动机 办公室有个工作站,要比我的笔记本的CPU稍微好一点,用来跑陆面过程。我信心满满的装了个Ubuntu20.04双系统,但是发现向日葵安装不上了。我少…

基于CentOS7.9搭建LNMP

今天为大家搭建一下基于CentOS7.9服务器部署LNMP,方便未来基于lnmp部署应用程序。 1.CentOS7.9基础配置 为了实现基于CentOS7.9服务器部署LNMP,CentOS7.9服务器需要满足一定的基础需要。具体参考:Linux常规基础配置_linux操作系统配置_小黑要上天的博客-CSDN博客 2.服务器…

lv11 嵌入式开发 RTC 17

目录 1 RTC简介 ​编辑2 Exynos4412下的RTC控制器 2.1 概述 2.2 特征 2.3 功能框图 3 寄存器介绍 3.1 概述 3.2 BCD格式的年月日寄存器 3.3 INTP中断挂起寄存器 3.4 RTCCON控制寄存器 3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器 4 RTC编程 5 练习 1 RTC简介 RTC(…

linux部署前端静态页面(实战)

Linux基本命令(学习笔记)零基础入门linux系统运维_linux find exec rm_Z_Xshan的博客-CSDN博客 如果linux不熟可以看我之前写的入门教程 感谢支持!! 一、服务器 这里去购买云服务器,如果是练习可以用虚拟机&#xff…

06、pytest将多个测试放在一个类中

官方用例 # content of test_class.py # 实例1 class TestClass:def test_one(self):x "this"assert "h" in xdef test_two(self):x "hello"assert hasattr(x,"check")# content of test_class_demo.py # 每个测试都有唯一的类实例…

《形式语言与自动机理论(第4版)》笔记(二)

文章目录 [toc]前导《形式语言与自动机理论(第4版)》笔记(一) 第三章:有穷状态自动机3.1|语言的识别3.2|有穷状态自动机即时描述 s e t ( ) set() set()例题问题 1 1 1解答问题 2 2 2解答 3.3|不确定的有穷状态自动机构…

机器学习——logistic回归

在之前实验接触到的机器学习算法都是的目的都是对数据集进行分类,即预测得到的结果是数据样本所属的类别,预测输出结果是离散的集合,比如{‘是’,‘不是’}。这次实验学习的是回归模型,与分类模型不同的是,…

邻接矩阵深度优先遍历

深度优先遍历(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。 在用邻接矩阵表示的图中进行深度优先遍历…

第N个泰波那锲数

1.题目解析 动态规划算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 为了填写当前状态的时候,所需要的状态已经计算过了!!! 5.返回值 题目要求 状态表示 ------------------------------------------------------…

单机游戏推荐:巨击大乱斗 GIGABASH 中文安装版

在泰坦之中称霸天下吧!《GigaBash 巨击大乱斗》是一款多人战斗擂台游戏,有着受特摄片启发的巨型怪兽,具有传奇色彩的英雄,震天动地的特别攻击,以及可以完全摧毁的擂台场景。 ​游戏特点 怪物大解放 多达10个独特的角…

U2 文法和语言

文章目录 一、预备知识1、字母表和符号串2、符号串形式定义3、符号串相等4、延申 二、文法1、 一些概念2、文法的定义3、推导的形式定义4、规范推导5、语言的形式定义6、递归文法7、BNF范式总结 三、短语、简单短语和句柄四、语法树(推导树)1、概念2、语法树推导--句型的推导3、…

AI Agent 结构与分类

一、什么是AI agent 在人工智能中,智能代理AI Agent是以智能方式行事的代理;它感知环境,自主采取行动以实现目标,并可以通过学习或获取知识来提高其性能。人其实就是一种复杂代理。 为了理解智能代理的结构,我们应该熟…

C++面试宝典第2题:逆序输出整数

题目 写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。 解析 这道题本身并没有什么…

17、pytest自动使用fixture

官方实例 # content of test_autouse_fixture.py import pytestpytest.fixture def first_entry():return "a"pytest.fixture def order():return []pytest.fixture(autouseTrue) def append_first(order, first_entry):return order.append(first_entry)def test_s…

04数据平台Flume

Flume 功能 Flume主要作用,就是实时读取服务器本地磁盘数据,将数据写入到 HDFS。 Flume是 Cloudera提供的高可用,高可靠性,分布式的海量日志采集、聚合和传输的系统工具。 Flume 架构 Flume组成架构如下图所示: A…
最新文章