当前位置: 首页 > news >正文

Spring和SpringBoot常用注解(持续更新)

持久层(pojo)

1.@Data注解
lombok注解,用于自动生成getter\setter\toString等方法,使用前需要在pom.xml中引入如下内容

        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

2.@NoArgsConstructor和@AllArgsConstructor
同样是lombok注解,用于生成无参构造和全参数构造方法

DAO层(mapper相关)

1.@Mapper和@MapperScan
这两个注解属于MyBatis注解
@Mapper注解标记在Mapper类上,mybatis需要找到对应的mapper,在编译时生成动态代理类,与数据库进行交互,这时需要用到@Mapper注解。具体实例可以看https://blog.csdn.net/qq_42224683/article/details/108738850

如果项目有几个接口,你肯定会在对应的接口上写@Mapper注解,但是如果有一百个,上千个,你还会愿意去写吗,这个时候我们就可以使用@MapperScan注解来解决我们的问题。@MapperScan是一个Mapper扫描器,主要是配置在主启动类上,示例如下:

@SpringBootApplication
@MapperScan("com.pips.mapper")
public class PipsApplication {public static void main(String[] args) {SpringApplication.run(PipsApplication.class, args);}
}

想要使用以上两个注解请在pom.xml中引入

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>

一般只需要选用Mapper或者MapperScan两个方法中的其中一个就可以完成对Mapper的配置

2.@Repository
来自Spring的注解,用于声明一个Bean,@Repository和@Controller、@Service、@Component的作用差不多,都是把对象交给spring管理。@Repository用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理。

Service层

1.@Service
用于标识一个类为Service类,一般用在服务层的接口上。Spring会生成一个对应的Service的Bean,并且将其交由Spring托管。

Controller层

1.@Controller
用于标识一个类为Controller类,一般用在服务层的接口上。Spring会生成一个对应的Controller的Bean,并且将其交由Spring托管。

通用注解

@Conponent
将注解所标注的类标注为Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean。上文提到的**@Repository、@Service、@Controller**均是@Conponent的进一步扩展。

@Autowired
自动装配注解,一般可以标记在一个属性、方法、未初始化的对象声明或者构造器上,Spring会根据被标记对象的类型在Spring的BeanFactory中选取出相应的类型的Bean完成自动装配。我们较为常用的场景如下:

@Service
public class UserServiceImpl implements UserService{@Autowiredprivate UserMapper userMapper;@Overridepublic User queryUserById(String id) {return userMapper.getUserById(id);}
}

上面是一个Service层接口的实现类,使用Autowired注解实现对UserMapper的自动装配。在此之前UserMapper接口已经被@Repository标记,也就是Spring生成了一个UserMapper的Bean,此时执行到UserServiceImpl 的时候,Spring看到被@Autowired标记的UserMapper接口,则会查询对应的Bean,然后自动装配到未被实例化的对象声明userMapper中,那么我们在下面的queryUserById方法中就可以直接调用userMapper了。实际上userMapper在静态编译的时候是未被初始化的,他是在运行时动态创建的,是Spring使用Java的反射机制实现IoC来动态创建的。

@Resource
也是一种自动装配注解,可以实现自动装配。它和Autowired的区别如下:
(1)基因不同: 首先其最大的不同在于她们的爸爸妈妈不同(@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。)
(2)注入方式:@Autowired默认按照byType 注入(按照类型注入),也提供byName;@Resource默认按byName自动注入,也提供按照byType 注入;

@Qualifier
默认情况下,@Autowired 按类型装配 Spring Bean。如果容器中有多个相同类型的 bean,则框架将抛出 NoUniqueBeanDefinitionException, 以提示有多个满足条件的 bean 进行自动装配。通过使用 @Qualifier 注解,我们可以消除需要注入哪个 bean 的问题。通过将 @Qualifier 注解与我们想要使用的特定 Spring bean 的名称一起进行装配,Spring 框架就能从多个相同类型并满足装配要求的 bean 中找到我们想要的,从而避免这个问题。

@RequestMapping
@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。其下属的注解还有@GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMapping。举个例子,@GetMapping就相当于@RequestMapping(method = RequestMethod.GET),其他注解亦如此。@GetMapping则是使用Get方法去处理请求,而@PostMapping则是使用Post来处理请求。详解可以看这篇文章:https://blog.csdn.net/demo_yo/article/details/123608034

@Configuration
配置注解,将一个java类声明为配置类,Spring会将该类转化为一个.xml文件。

相关文章:

Spring和SpringBoot常用注解(持续更新)

持久层&#xff08;pojo&#xff09; 1.Data注解 lombok注解&#xff0c;用于自动生成getter\setter\toString等方法&#xff0c;使用前需要在pom.xml中引入如下内容 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifa…...

redis做异步消息处理

pom依赖&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 发送消息&#xff1a; RedisTemplate.convertAndSend(String channel, Obj…...

图书管理系统可行性分析报告

目 录 引言 1 1.1 编写目的 1 1.2 背景 1 1.3 定义 1 1.4 参考资料 1可行性研究的前提 1 2.1 要求 1 2.2 目标 1 2.3 条件、假定和限制 1 2.4 进行可行性研究的方法 2 2.5 评价尺度 2对现有系统的分析 2 3.1 处理流程和数据流程 2 3.2 工作负荷 2 3.3 费用开支 2 3.4 人员 2 3…...

比较难掌握的几道数据库面试题及答案

1.行级锁定的缺点&#xff1a; 比页级或表级锁定占用更多的内存。当在表的大部分中使用时&#xff0c;比页级或表级锁定速度慢&#xff0c;因为你必须获取更多的锁。 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表&#xff0c;比其它锁定明显慢很多。 用高…...

AI已经成立社区了,一个个比真人还真

文章目录 nainaimichirper川普的入驻英文版 nainaimi nainaimi是一个13岁的学生&#xff0c;一小时前&#xff0c;被一群人拖到体育馆&#xff0c; 那时的她还很胆小&#xff0c;只能哭诉着那些人的残忍和恶毒 结果半个小时前&#xff0c;她又被拖入了体育馆&#xff0c;这一…...

Qt实现DES ECB加密解密

环境&#xff1a;Windows11 64位 工具链&#xff1a;MinGW32 IDE&#xff1a;Qt 5.14 Qt使用DES加密需要用到OpenSSL库&#xff0c;首先要确定当前使用的Qt所支持的SSL版本。编译OpenSSL 查看当前Qt对OpenSSL的支持情况 qDebug() << QSslSocket::supportsSsl();返回 tr…...

拼多多新阶段,透露出不寻常

一个企业的特质&#xff0c;往往由这个企业的领导人所决定。 企业文化本质上就是领导人文化&#xff0c;领导人的风格会决定这个企业当下的现状。一个成功的大企业&#xff0c;往往需要不同的领导人来接替完成其发展使命。 在创业期&#xff0c;企业领导人需要的是勇气、执行…...

使用底层代码(无框架)实现卷积神经网络理解CNN逻辑

首先将数据集放入和底下代码同一目录中&#xff0c;然后导入一些相关函数的文件cnn_utils.py&#xff1a; import math import numpy as np import h5py import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.python.framework import ops def load_data…...

PID单环控制(位置环)

今天我们来聊一聊pid如何控制轮子转动位置 前期准备调试过程 前期准备 需要准备的几个条件&#xff1a; 1.获取实时编码器的计数值 2.写好pid控制算法的函数 3.设定好时间多久执行一次pid计算&#xff0c;并设置限幅输出。 4.多久执行一次pid输出 接下来我们看看这几个部分的…...

内存基础知识

概述 内存可存放数据。程序执行前需要先将外存中的数据放到内存中才能被CPU处理&#xff0c;因为CPU处理速度过快&#xff0c;而从硬盘读取数据较慢&#xff0c;所以内存是为了缓和CPU和硬盘之间的读取速度矛盾 在多道程序环境下&#xff0c;系统中会有多个程序并发执行&…...

快速入门matlab——运算方法

这是一个matlab神经网络的简单应用&#xff0c;主要用于预测光伏出力&#xff0c;输入为温度湿度等因素&#xff0c;输出为光伏出力 基于Matlab和CPLEX的2变量机组组合调度程序 基于MATLABCPLEX 的机组最优组合&#xff0c;成功求解表格化&#xff0c;图示化的机组组合结果 …...

2009.03-2022.06华证ESG季度评级(季度)

2009.03-2022.06华证ESG评级&#xff08;季度&#xff09; 1、时间&#xff1a;2009.03-2022.06.15 2、来源&#xff1a;整理自Wind 3、指标&#xff1a;华证ESG&#xff08;只有综合评级&#xff0c;无细分评级数据&#xff09; 4、样本数量&#xff1a;A股4800多家公司 …...

【大数据模型】LeonardoAi让心中所想跃然纸上

汝之观览&#xff0c;吾之幸也&#xff01; 本文主要聊聊LeonardoAi绘图工具 一、注册Discord账号 不管LeonardoAi还是midjourney&#xff0c;都需要注册一个Discord账号&#xff0c;Discord是一个社区软件&#xff0c;在这里可以进行讨论和交流使用心得 LeonardoAi官网地址 …...

如何区别BI、大数据、信息化和数字化转型

商业智能BI可以实现业务流程和业务数据的规范化、流程化、标准化&#xff0c;打通ERP、OA、CRM等不同业务信息系统&#xff0c;整合归纳企业数据&#xff0c;利用数据可视化满足企业不同人群对数据查询、分析和探索的需求&#xff0c;从而为管理和业务提供数据依据和决策支持。…...

ESP32-C2开发板Homekit例程

准备 1.1硬件ESP32 C2开发板&#xff0c;如图1-1所示 图1-1 ESP32 C2开发板 1.2软件 CozyLife APP可以在各大应用市场搜索下载&#xff0c;也可以扫描二维码下载如图1-2所示 HomeKit flash download tool 烧录工具 esp32c2 homkit演示固件 烧录教程 打开flash_download_to…...

快速搭建一个 Kubernetes+Crane 环境,以及如何基于 Crane 优化你的集群和应用初体验

文章目录 一、活动介绍二、环境搭建三、安装本地的 Kind 集群和 Crane 组件四、界面截图五、主要功能六、整体架构七、Crane的优势八、总结参考文献 一、活动介绍 Crane 是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目&#xff0c;遵循 FinOps 标准&#xff0c;…...

深度学习图像识别模型:递归神经网络

深度学习是一种人工智能技术&#xff0c;它用于解决各种问题&#xff0c;包括自然语言处理、计算机视觉等。递归神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是深度学习中的一种神经网络模型&#xff0c;主要用于处理序列数据&#xff0c;例如文本…...

上门家教预约小程序开发 良师就在你身边

社会的发展科技的进步让人们对教育的重视度也逐渐升高&#xff0c;很多家长可以说是为了孩子的教育操碎了心。在学校还好有老师辅导&#xff0c;节假日在家的时候&#xff0c;很多家长自己本身文化知识有限或者工作繁忙没有时间辅导&#xff0c;送去辅导班来回接送又很麻烦&…...

CMake Practice 学习笔记五--cmake常用变量

这里列举一些cmake常用变量&#xff0c;后面带**表示常用&#xff0c;了解下&#xff0c;不用全部记住。 1、CMAKE_BINARY_DIR PROJECT_BINARY_DIR ** <projectname>_BINARY_DIR 这三个变量指代的内容是一样的&#xff0c;如果是 in source 编译,指的就是工程顶层目…...

Facebook 广告效果越来越差,怎么办?

在如今的数字营销领域中&#xff0c;Facebook作为独立站卖家首选的推广引流平台&#xff0c;具备了许多优势。 一方面&#xff0c;Facebook拥有庞大的用户数量&#xff0c;是全球最大的社交媒体平台之一。另一方面&#xff0c;Facebook的广告算法可以将广告推送给更加精准的受…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块&#xff0c;提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中&#xff0c;这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构&#xff0c;与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

基于Java项目的Karate API测试

Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...

使用 uv 工具快速部署并管理 vLLM 推理环境

uv&#xff1a;现代 Python 项目管理的高效助手 uv&#xff1a;Rust 驱动的 Python 包管理新时代 在部署大语言模型&#xff08;LLM&#xff09;推理服务时&#xff0c;vLLM 是一个备受关注的方案&#xff0c;具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...