Spring Spring Boot 常用注解总结
在 Java 开发中,Spring 和 Spring Boot 框架广泛应用于企业级应用开发。这两个框架提供了丰富的注解,使得开发更加高效和便捷。本文将对 Spring 和 Spring Boot 中常用的注解进行总结。
一、Spring 常用注解
1. @Component
- 作用:用于将普通的 Java 类标记为 Spring 中的 Bean。被标记的类将被 Spring 容器管理,可以通过依赖注入的方式使用。
- 示例:
@Component
public class UserService {//...
}
2. @Autowired
- 作用:自动装配 Bean。当一个类的成员变量、方法参数或构造函数参数被标记为
@Autowired
时,Spring 容器会自动将匹配类型的 Bean 注入到该成员变量、方法参数或构造函数中。
@Component
public class OrderService {@Autowiredprivate UserService userService;//...
}
3. @Service
- 作用:用于标注业务逻辑层的组件。通常用于表示服务类,这些类通常包含业务逻辑和处理数据的方法。
- 示例:
@Service
public class UserServiceImpl implements UserService {//...
}
4. @Repository
- 作用:用于标注数据访问层的组件。通常用于表示数据访问对象(DAO)类,这些类负责与数据库进行交互。
- 示例:
@Repository
public class UserDaoImpl implements UserDao {//...
}
5. @Controller
- 作用:用于标注表示层的组件。通常用于表示控制器类,这些类处理 HTTP 请求并返回响应。
- 示例:
@Controller
public class UserController {@Autowiredprivate UserService userService;//...
}
6. @RequestMapping
- 作用:用于将 HTTP 请求映射到特定的方法上。可以在类级别和方法级别使用。
- 示例:
@Controller
@RequestMapping("/users")
public class UserController {@RequestMapping("/list")public String listUsers() {//...return "user/list";}
}
7. @PathVariable
- 作用:用于获取 URL 中的路径变量。当 URL 中的部分内容是动态的时,可以使用
@PathVariable
注解将其绑定到方法参数上。 - 示例:
@Controller
@RequestMapping("/users")
public class UserController {@RequestMapping("/{id}")public String getUserById(@PathVariable("id") Long id) {//...return "user/detail";}
}
8. @RequestParam
- 作用:用于获取 HTTP 请求中的参数。可以将请求参数绑定到方法参数上。
- 示例:
@Controller
@RequestMapping("/users")
public class UserController {@RequestMapping("/search")public String searchUsers(@RequestParam("keyword") String keyword) {//...return "user/search";}
}
二、Spring Boot 常用注解
1. @SpringBootApplication
- 作用:这是一个组合注解,包含了
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。用于标记一个主类,该主类是 Spring Boot 应用的入口点。 - 示例:
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
2. @RestController
- 作用:用于标注控制器类,该类中的方法将返回 JSON、XML 或其他格式的响应。相当于
@Controller
和@ResponseBody
的组合。 - 示例:
@RestController
@RequestMapping("/api/users")
public class UserApiController {//...
}
3. @GetMapping
- 作用:用于将 HTTP GET 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.GET)
的简化形式。 - 示例:
@RestController
@RequestMapping("/api/users")
public class UserApiController {@GetMapping("/{id}")public User getUserById(@PathVariable("id") Long id) {//...return user;}
}
4. @PostMapping
- 作用:用于将 HTTP POST 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.POST)
的简化形式。 - 示例:
收起
java
复制
@RestController
@RequestMapping("/api/users")
public class UserApiController {@PostMappingpublic User createUser(@RequestBody User user) {//...return user;}
}
5. @PutMapping
- 作用:用于将 HTTP PUT 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.PUT)
的简化形式。 - 示例:
收起
java
复制
@RestController
@RequestMapping("/api/users")
public class UserApiController {@PutMapping("/{id}")public User updateUser(@PathVariable("id") Long id, @RequestBody User user) {//...return user;}
}
6. @DeleteMapping
- 作用:用于将 HTTP DELETE 请求映射到特定的方法上。是
@RequestMapping(method = RequestMethod.DELETE)
的简化形式。 - 示例:
@RestController
@RequestMapping("/api/users")
public class UserApiController {@DeleteMapping("/{id}")public void deleteUser(@PathVariable("id") Long id) {//...}
}
7. @Value
- 作用:用于注入配置文件中的属性值。可以将配置文件中的属性值注入到类的成员变量、方法参数或构造函数参数中。
- 示例:
@Component
public class MyService {@Value("${my.property}")private String myProperty;//...
}
8. @ConfigurationProperties
- 作用:用于将配置文件中的属性绑定到 Java 对象上。可以将一组相关的属性绑定到一个 Java 对象中,方便管理和使用配置。
- 示例:
@Component
@ConfigurationProperties(prefix = "myapp")
public class AppConfig {private String property1;private int property2;// getters and setters
}
以上是 Spring 和 Spring Boot 中常用的注解总结。这些注解可以大大提高开发效率,使代码更加简洁和易于维护。在实际开发中,可以根据具体需求选择合适的注解来实现功能。
相关文章:
Spring Spring Boot 常用注解总结
在 Java 开发中,Spring 和 Spring Boot 框架广泛应用于企业级应用开发。这两个框架提供了丰富的注解,使得开发更加高效和便捷。本文将对 Spring 和 Spring Boot 中常用的注解进行总结。 一、Spring 常用注解 1. Component 作用:用于将普通的…...
Flink独立集群+Flink整合yarn
Flink独立集群的搭建: 1、上传解压配置环境变量 # 1、解压 tar -xvf flink-1.15.4-bin-scala_2.12.tgz # 2、修改环境变量 export FLINK_HOME/usr/local/soft/flink-1.15.4 export PATH$PATH:$FLINK_HOME/bin 2、修改配置文件 cd /usr/local/soft/flink-1.15.4/…...
动态规划 之 简单多状态 dp 问题 算法专题
一. 按摩师 按摩师 状态表示 根据经验 题目要求 dp[i] 表示: 选择到i位置时, 此时的最长预约时长 但是根据题目又分成两种情况: f[i] : 选择到 i 位置的时候, nums[i] 必选, 此时的最长预约时长 g[i] : 选择到 i 位置的时候, nums[i] 不选, 此时的最长预约时长状态转移方程 …...

qt QPixmapCache详解
1、概述 QPixmapCache是Qt框架中提供的一个功能强大的图像缓存管理工具类。它允许开发者在全局范围内缓存QPixmap对象,从而有效减少图像的重复加载,提高图像加载和显示的效率。这对于需要频繁加载和显示图像的用户界面应用来说尤为重要,能够…...
Redis中的持久化
什么是 Redis 持久化? Redis 是一个内存数据库,也就是说它主要把数据存储在内存中,这样可以实现非常高的读写速度。通常,内存数据库是非常快速且高效的,但它也有一个很大的问题:数据丢失的风险。因为当 Red…...

Unity 如何优雅的限定文本长度, 包含对特殊字符,汉字,数字的处理。实际的案例包括 用户昵称
常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文,数字,英文进行识别,同样数量的汉字和同样数量的英文像素长度是不一样的,当我们限定固定长度后,在界面上的排版不够美观 痛点2…...

SMO+PLL滑膜观测器、MARS模型参考自适应观测器simulink仿真
模型内容介绍: (1)SMOPLL滑膜观测器通过SMO估计电机的转速和位置信息,并利用PLL技术对这些信息进行跟踪和校正,以实现高精度的电机控制; (2)MARS是一种基于模型参考自适应控制理论…...
例题解析:利用异或运算(XOR)找出单独的数
异或运算(XOR) 异或运算是一种位运算,通常用符号 ^ 表示。它的运算规则如下: 如果两个二进制位相同,结果为 0。如果两个二进制位不同,结果为 1。 具体来说,对于两个二进制位 a 和 bÿ…...

如何处理微信小程序大量未捕获的异常
1)如何处理微信小程序大量未捕获的异常 2)如何关闭代码创建的纹理的读写,或者创建不带读写的图片 3)回收带有贴图和Collider的Mesh,如何正确用对象池维护 4)Cloth组件使用在一个篮筐上,运行后篮…...
C#-StringBuilder
string:特殊的引用 每次重新赋值或者拼接时会分配新的内存空间,如果一个字符串经常改变会非常浪费空间。 StringBuilder:C#提供的一个用于处理字符串的公共类 修改字符串而不创建新的对象,需要频繁修改和拼接的字符串可以使用它…...

SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-39/ 本关是堆…...

linux安装zookeeper和kafka集群
linux安装zookeeper和kafka集群 一、Zookeeper集群部署安装zookeeper1. 下载2. 上传, 解压3. 配置 Zookeeper 节点4. 创建 myid 文件5. 启动参数更改6. sh文件授权7. 启动集群8. 防火墙开启端口 验证集群 二、kafka集群安装安装Kafka1. 下载Kafka安装包2. 上传到服务器…...

洞悉 Linux 系统运行细节,使用 atop 监测和回看系统负载状态
Linux系统的资源使用情况,你可以通过使用命令如free、top和netstat来实时监控内存、CPU及端口的使用状态。对于需要追踪历史资源消耗动态的场景,atop命令则能有效帮助用户查看过去的系统负载情况。 本篇教程的灵感源自一位小伙伴的真实经历:…...

“双十一”电商狂欢进行时,在AI的加持下看网易云信IM、RTC如何助力商家!
作为一年一度的消费盛会,2024年“双十一”购物狂欢节早已拉开帷幕。蹲守直播间、在主播热情介绍中点开链接并加购,也已成为大多数人打开“双11”的重要方式。然而,在这火热的购物氛围背后,主播频频“翻车”、优质主播稀缺、客服响…...
Python调用企业微信的扫一扫
在企业微信里面新建了一个应用,指向了搭建服务器上Django写的web应用。 web应用需要使用扫描二维码的功能,就使用了大家都评价效果好的微信的扫一扫,事实也证明微信的扫一扫很好,但实现这个功能还是花了自己不少时间,很…...
速盾:CDN和OBS能共用流量包吗?
CDN和OBS是两种不同的云服务,它们在内容分发和存储方面有着不同的功能和优势。虽然它们都可以用于提供高效的内容分发和存储服务,但是它们的流量包是不能共用的。 CDN,即内容分发网络,是一种通过将内容存储在全球分布的服务器上&…...

第8章 利用CSS制作导航菜单
8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计,一般放置在页面的顶部。水平 导航适用性强,几乎所有类型的网站都可以使用,设计难度较低。 如果导航过于普通,无法容纳复杂的信息结构,就需要在…...
C# 集合与泛型
文章目录 前言1.什么是集合?2.非泛型集合(了解即可)2.1常见的非泛型集合 3.泛型的概念4.常用的泛型集合4.1 List < T > <T> <T>4.2 Dictionary<TKey, TValue>4.3 Queue < T > <T> <T>4.4 S t a c…...
el-date-picker 设置开始时间和结束时间
<el-date-picker v-model"ruleForm.RECORDDATE" type"date" placeholder"日期" format"YYYY/M/D" value-format"YYYY/M/D" style"width: 100%;" :disabled-date"publishDateAfter" > </el-dat…...
【Docker】 常用命令
文章目录 介绍Docker和容器化技术什么是Docker?Docker的优势和应用场景Docker的应用场景包括但不限于: 安装和配置Docker安装Docker引擎配置Docker环境 Docker镜像命令搜索镜像拉取镜像查看本地镜像删除本地镜像 Docker容器命令创建容器启动容器停止容器…...

我爱学算法之—— 前缀和(中)
一、724. 寻找数组的中心下标 题目解析 这道题,给定数组nums,要求我们找出这个数组的中心下标。 **中心下标:**指左侧所有元素的和等于右侧所有元素的和。 如果存在多个中心数组下标,就返回最左侧的中心数组下标。 算法思路 暴…...
JSON解析崩溃原因及解决方案
问题记录: /************************************************| * 描述: 将ID124执行NFC操作-JSON解析为结构体* 函数名: cJSON_ID124_to_struct* 参数[ I]: *json_string 待解析的指针* 参数[II]: *wireless_rxd 结构体指针* 返回: 成功返回0 失…...

在Windows下利用LoongArch-toolchain交叉编译Qt
文章目录 0.交叉编译的必要性1.下载交叉编译工具链1.1.直接在Windows下使用mingw(不使用虚拟机)编译(还没成功,无法编译)1.2.在虚拟机中的Ubuntu中进行交叉编译 2.下载qt源码3.编译Qt3.1.创建loongarch64的mkspec3.2.创…...
【Go语言基础【19】】接口:灵活实现多态的核心机制
文章目录 零、概述一、接口基础1、接口的基本概念a. 接口定义b. 类型实现接口(无需显式声明)c. 接口变量(体现了多态) 2、实现接口的方式3、接口组合4、接口的底层结构 二、空接口与类型断言1. 空接口(interface{}&…...

surfer15安装
安装文件 安装包和破解文件 安装 破解及汉化 打开软件...
贝叶斯医学分析中“先验”的如何进行选择(文献解读)
贝叶斯医学分析中“先验”的如何进行选择(文献解读) 作者:Callum Taylor, Kathryn Puxty, Tara Quasim, Martin Shaw 文章标题:Understanding Bayesian analysis of clinical trials: an overview for clinicians 期刊名称&#x…...

【图片识别改名】如何批量将图片按图片上文字重命名?自动批量识别图片文字并命名,基于图片文字内容改名,WPF和京东ocr识别的解决方案
应用场景 在日常工作和生活中,我们经常会遇到需要对大量图片进行重命名的情况。例如,设计师可能需要根据图片内容为设计素材命名,文档管理人员可能需要根据扫描文档中的文字对图片进行分类命名。传统的手动重命名方式效率低下且容易出错&…...
atc abc409E
原题链接:E - Pair Annihilation 题目背景: n 个点 n - 1 条边的有权无向图,每个点都有一个值,两个连通的点的值可以互相抵消,既将u 的 -1 传给 v 时可以抵消掉 v 的 1 并花费边权值;求最小花费。 考察算…...

9.RV1126-OPENCV 视频的膨胀和腐蚀
一.膨胀 1.视频流的膨胀流程 之前膨胀都是在图片中进行的,现在要在视频中进行也简单,大概思路就是:获取VI数据,然后把VI数据给Mat化发给VENC模块,然后VENC模块获取,这样就完成了。流程图: 2.代…...

第六个微信小程序:教师工具集
源于工作需要,下面开始。 安装及使用 | Taro 文档 vscode 代码管理 git 辅助 开发技术如上: 1.开始创建模板 taro4.1.1 $ taro init teachers-tools 2.用vsocde开始吧。 选择 第二个文件夹找一。 (base) PS D:\react\teachers-tools> pnpm…...