springboot的常用注解

news2024/9/30 3:26:18

在这里插入图片描述

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

名称作用
@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.coloradmin.cn/o/1283562.html

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

相关文章

DistributionBalancedLoss

Distribution-Balanced Loss P I ( x k ) P^I(x^k) PI(xk) 1 C ∑ y i k 1 1 n i {1\over C}\sum\limits_{y_i^k1}{1\over{n_i}} C1​yik​1∑​ni​1​, P i C ( x k ) P^C_i(x^k) PiC​(xk) 1 C 1 n i {1\over C}{1\over{n_i}} C1​ni​1​ r i k _i^k ik​ P i …

目标检测——R-CNN系列检测算法总结

R-CNN系列算法详细解读文章: R-CNN算法解读SPPNet算法解读Fast R-CNN算法解读Faster R-CNN算法解读Mask R-CNN算法解读 目录 1、概述1.1 获取目标候选框1.2 候选框提取特征1.3 候选框分类及边框回归 2、R-CNN系列算法概述2.1 R-CNN算法2.2 SPPNet算法2.3 Fast R-CN…

C++作业5

完成沙发床的多继承&#xff08;有指针成员&#xff09; 代码&#xff1a; #include <iostream>using namespace std;class Bed { private:double *money; public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(double money):money(new doub…

http代理如何设置手机上网?http代理起到了哪些作用

本文将详细介绍如何设置手机上网使用HTTP代理&#xff0c;以及HTTP代理所起到的作用。 一、HTTP代理是什么&#xff1f; HTTP代理是一种网络协议&#xff0c;它允许客户端与服务器之间进行数据传输。它是一种常用的代理服务&#xff0c;可以帮助用户通过HTTP协议访问被封锁的网…

帆软报表不能增加SAP连接方式 通过插件一致性检测 同步至本地解决

帆软报表开发人员需要增加一个SAP数据连接方式&#xff1a;SAP_ECC_600环境 在服务器端不能直接增加&#xff0c;而在帆软报表设计器切换到远程模式时&#xff0c;又不能显示SAP连接&#xff0c;导致不能增加。 解决&#xff1a;重新进入帆软报表报计器时报以下错误&#xff0c…

Spring Cloud + Vue前后端分离-第2章 使用Maven搭建SpringCloud项目

第2章 使用Maven搭建SpringCloud项目 Maven两大核心功能&#xff1a; 依赖管理&#xff08;Jar包管理&#xff09; 构建项目&#xff08;项目打包&#xff09; 使用Eureka搭建注册中心 使用spring initializr创建spring cloud项目 SpringCloud和Maven简介 SpringBoot和Spr…

FacetWP Relevanssi Integration相关性集成插件

点击阅读FacetWP Relevanssi Integration相关性集成插件原文 FacetWP Relevanssi Integration相关性集成插件是FacetWP与用于高级搜索的 Relevanssi 插件的集成显着增强了您网站的搜索功能。这个强大的工具使您的用户能够轻松找到他们寻求的特定内容&#xff0c;无论他们的查询…

craco + webpack 4 升 5

craco webpack 4 升 5 更新包版本尝试build升级其他依赖库使用process插件打印进度信息到底需要多少内存分析构建产出添加 splitChunk总结记录一些好文章&#xff1a; 我的项目使用 craco react 开发 我的 package.json {// ......"dependencies": {"ant-desi…

如何在 Chrome 上调试文件打断点

1. 控制台进入 Source 2. CtrlP 输入文件名称 3. 在需要的位置手动打断点 4. 重新触发代码运行&#xff0c;触发断点

【android开发-14】android中fragment用法详细介绍

1&#xff0c;fragment是什么&#xff1f; Fragment是Android中的一种组件&#xff0c;它在Android 3.0&#xff08;API级别11&#xff09;及以后的版本中引入。Fragment可以用来在Activity中添加一个或多个具有自己的用户界面的片段。它们可以与Activity进行交互&#xff0c;并…

查找一维向量中大于或小于某一值的所有连续片段

文章目录 经常会遇到一种场景&#xff0c;那就是有一个一维向量&#xff0c;我们要找到其中所有大于设定阈值的片段。就好比电路中有高代电平&#xff0c;我们要找连续的高电平段或低电平&#xff1a; 如上图&#xff0c;我们只要标红的高电平&#xff0c;对应代码&#xff1…

【原神游戏开发日志1】缘起

【原神游戏开发日志1】缘起 版权声明 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 文章内容不得删减、修改、演绎 相关学习资源见文末 大家好&#xff0c;最近看到原神在TGA上频频获奖&#xff0c;作为一个14年经验的游戏开…

智能优化算法应用:基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社会群体算法4.实验参数设定5.算法结果6.参考…

医院信息化专业人员必备医院业务运作及管理流程知识(详细)

业务流程是一家医院运作的基础,医院所有业务都需要流程加以驱动。熟知医院各项业务,了解医院管理流程,有利于医院工作人员更好地投入自身岗位,提高工作效率。本文整理了常见医院业务运作及管理流程,仅供参考! 【门诊业务】 一、门诊业务的特点: 1.接诊病人多,就诊时…

Sui生态DeFi将参加Builder DAO举办的活动,为期三天畅谈如何Build on Sui

LeadUp the Night是一个定期举办的MeetUp活动&#xff0c;由Builder DAO邀请区块链各方项目开发者、VC担任本活动的讲师。这个活动旨在促进区块链技术的发展和应用&#xff0c;让参与者有机会开发创新的区块链应用&#xff0c;探索区块链技术的潜力。 ​​​12月4日-6日受Buil…

使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 科技日益发展的今天&#xff0c;移动电子设备似乎成了我们生活的主角&#xff0c;智能…

网盘系统设计:万亿 GB 网盘如何实现秒传与限速?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 网盘&#xff0c;又称云盘&#xff0c;是提供文件托管和文件上传、下载服务的网站&#xff08;File hostingservice&#xff09;。人们通过网盘保管自己拍摄的照片、视频&#xff0c;通过网盘和他人共享文件&#xff…

Kubeadm构建K8S集群指南:从环境准备到Dashboard部署的详细步骤与常见问题解决方案

文章目录 一、环境准备1、准备1主2从2、设置主机名与时区3、添加hosts网络主机配置4、关闭防火墙5、验证是否配置正确 二、安装Kubeadm1、在每个Centos上安装Docker2、确保从cgroups均在同一个从groupfs3、安装kubeadm集群部署工具4、关闭交换区5、配置网桥6、通过镜像安装k8s7…

【PCB知识】

PCB知识 1. PCB知识1.1 扩展名1.21.31.4 2.3.4.5. 1. PCB知识 1.1 扩展名 扩展名为 *.opj 的文件可以使用 Origin Project 应用程序打开。 扩展名为*.DSN文件&#xff0c;一般为isis或OrCAD电路图文件&#xff0c; OrCAD为Cadence软件组件&#xff1b; isis为Proteus软件的sc…

整数和浮点数在内存中的存储

文章目录 每日一言整数在内存中的存储方式浮点数在内存中的存储结语 每日一言 You just can’t beat the person who never gives up. 你无法打败那位永不放弃的人。 整数在内存中的存储方式 整数在内存中的存储方式通常采用二进制形式&#xff0c;即将整数的数值转化为二进制…