探索Spring最常用的30个注解

目录

      • 1-10 Spring常用注解解析
      • 11-20 Spring进阶注解深度解析
      • 21-30 Spring进阶注解深度解析
      • 结语

前言:

欢迎来到探索Spring注解的奇妙之旅!在这篇博客中,我们将深入研究Spring框架中最常用的30个注解,揭示它们的作用和用法,助你更好地掌握Spring的强大功能。

Spring作为一个广泛应用的Java框架,注解是其核心特性之一,为开发人员提供了便捷、灵活的方式来配置和管理应用。无论你是初学者还是有一定经验的开发者,这篇博客都将为你解密Spring注解的奥秘,为你提供实用而有深度的注解应用技巧。

让我们一同踏上Spring注解之旅,深入了解这些神奇的注解,为你的Spring应用增色不少。祝你在这趟注解之旅中有所收获,希望这篇博客成为你学习Spring注解的得力指南! 🌼🌐

1-10 Spring常用注解解析

  1. @Autowired - 自动注入

    @Autowired
    private MyService myService;
    
  2. @Controller - 控制器

    @Controller
    public class MyController {// Controller code
    }
    
  3. @Service - 服务层

    @Service
    public class MyService {// Service code
    }
    
  4. @Repository - 数据仓库

    @Repository
    public class MyRepository {// Repository code
    }
    
  5. @RequestMapping - 请求映射

    @Controller
    @RequestMapping("/my")
    public class MyController {// Controller code
    }
    
  6. @GetMapping - GET请求映射

    @Controller
    @RequestMapping("/my")
    public class MyController {@GetMapping("/info")public String getInfo() {// Method code}
    }
    
  7. @PostMapping - POST请求映射

    @Controller
    @RequestMapping("/my")
    public class MyController {@PostMapping("/create")public String create() {// Method code}
    }
    
  8. @PathVariable - 路径变量

    @Controller
    @RequestMapping("/my")
    public class MyController {@GetMapping("/info/{id}")public String getInfo(@PathVariable Long id) {// Method code}
    }
    
  9. @RequestParam - 请求参数

    @Controller
    @RequestMapping("/my")
    public class MyController {@GetMapping("/info")public String getInfo(@RequestParam String name) {// Method code}
    }
    
  10. @ResponseBody - 返回JSON格式数据

    @Controller
    @RequestMapping("/my")
    public class MyController {@GetMapping("/info")@ResponseBodypublic Map<String, String> getInfo() {// Method code}
    

11-20 Spring进阶注解深度解析

  1. @Configuration - 配置类

    @Configuration
    public class AppConfig {// Configuration code
    }
    
  2. @Bean - 定义Bean

    @Configuration
    public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
    }
    
  3. @ComponentScan - 组件扫描

    @Configuration
    @ComponentScan("com.example")
    public class AppConfig {// Configuration code
    }
    
  4. @Value - 注入属性值

    @Component
    public class MyComponent {@Value("${my.property}")private String property;
    }
    
  5. @Qualifier - 限定符注入

    @Autowired
    @Qualifier("myServiceImpl")
    private MyService myService;
    
  6. @Profile - 环境配置

    @Configuration
    @Profile("dev")
    public class DevConfig {// Dev configuration code
    }
    
  7. @Scope - Bean作用域

    @Component
    @Scope("prototype")
    public class MyComponent {// Component code
    }
    
  8. @Lazy - 懒加载

    @Component
    @Lazy
    public class MyComponent {// Component code
    }
    
  9. @Async - 异步方法

    @Service
    public class MyService {@Asyncpublic void asyncMethod() {// Async method code}
    }
    
  10. @Scheduled - 定时任务

    @Service
    public class MyService {@Scheduled(fixedRate = 5000)public void scheduledMethod() {// Scheduled method code}
    }
    

21-30 Spring进阶注解深度解析

  1. @Transaction - 事务管理

    @Service
    public class MyService {@Transactionalpublic void performTransaction() {// Transactional method code}
    }
    
  2. @Cacheable - 缓存数据

    @Service
    public class MyService {@Cacheable("myCache")public String getCachedData() {// Cached data retrieval code}
    }
    
  3. @CacheEvict - 清除缓存

    @Service
    public class MyService {@CacheEvict("myCache")public void clearCache() {// Cache clearing code}
    }
    
  4. @Validated - 参数验证

    @RestController
    public class MyController {@PostMapping("/validate")public ResponseEntity<String> validateData(@RequestBody @Validated MyDto myDto) {// Validation code}
    }
    
  5. @ExceptionHandler - 异常处理

    @ControllerAdvice
    public class GlobalExceptionHandler {@ExceptionHandler(MyException.class)public ResponseEntity<String> handleMyException(MyException ex) {// Exception handling code}
    }
    
  6. @ModelAttribute - 模型属性

    @Controller
    public class MyController {@ModelAttribute("myData")public MyData prepareData() {// Model attribute preparation code}
    }
    
  7. @CookieValue - 获取Cookie值

    @Controller
    public class MyController {@GetMapping("/getCookie")public String getCookieValue(@CookieValue(name = "myCookie") String cookieValue) {// Cookie value retrieval code}
    }
    
  8. @RequestHeader - 获取请求头

    @Controller
    public class MyController {@GetMapping("/getHeader")public String getHeaderValue(@RequestHeader("myHeader") String headerValue) {// Header value retrieval code}
    }
    
  9. @ResponseStatus - 设置响应状态

    @RestController
    public class MyController {@ResponseStatus(HttpStatus.CREATED)@PostMapping("/createResource")public void createResource() {// Resource creation code}
    }
    
  10. @PropertySource - 加载属性文件

    @Configuration
    @PropertySource("classpath:my.properties")
    public class MyConfig {// Configuration code
    }
    

结语

感谢你的持续关注,希望这30个Spring注解能够为你的Spring项目开发提供更多便利和灵活性。Spring注解的丰富功能,让开发变得更加高效、简洁。

期待下次与你一同探讨更多的Spring框架知识,愿你在Spring的世界中越走越远,创造出更加出色的应用! 🌺📚

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

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

相关文章

微信好友添加频繁的原因

01 微信好友添加频繁的原因 1. 添加好友的频率太高&#xff1a;短时间内添加多个好友&#xff0c;系统会认为账号被盗&#xff0c;从而限制用户添加好友&#xff1b; 2. 频繁的发送好友请求&#xff1a;在短时间内连续发送好友请求&#xff0c;也会导致微信限制操作&#xff0…

使用Gitea搭建自己的git远程仓库

Gitea 为什么需要自建仓库 原因只有一个&#xff1a;折腾。其实国内的码云加上github已经足够用了。 官方原话 Gitea 的首要目标是创建一个极易安装&#xff0c;运行非常快速&#xff0c;安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言&#xff0c;这使我们…

【数据结构】——期末复习题题库(5)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

JMeter与Allure的完美结合:打造高效、易读的性能测试报告

随着互联网的快速发展&#xff0c;软件性能测试已经成为软件开发过程中不可或缺的一环。为了提高测试效率和报告质量&#xff0c;许多测试团队开始寻求自动化测试工具和报告生成工具的结合。在这篇文章中&#xff0c;我们将介绍如何将JMeter与Allure结合使用&#xff0c;以实现…

com.gexin.platform 依赖下载问题

打包时报错显示&#xff1a; com.gexin.platform:gexin-rp-sdk-http:pom:4.1.1.4 failed to transfer from http://0.0.0.0/ 解决办法&#xff1a; 1、在idea中找到maven中的设置的settings.xml 2、根据路径找到settings.xml文件&#xff0c;添加以下内容 <mirror><…

遇到无序多变请求怎么办,可以试试责任链模式

责任链模式&#xff08;Chain Of Responsibility Design Pattern&#xff09;&#xff0c;也叫做职责链&#xff0c;是将请求的发送和接收解耦&#xff0c;让多个接收对象都有机会处理这个请求。当有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到有对象处理它…

知识点积累

2024.01.02 1. 正向代理/反向代理 遇见场景&#xff1a;在客户端获取接口&#xff0c;拿着接口去后端代码查询不到该接口&#xff0c;实际结果在前端代码查询到了该接口&#xff0c;然后开始接触正向代理、反向代理。 &#xff08;1&#xff09;正向代理&#xff1a;指代理服…

UDP通信(服务器-客户端)

一、 UDP服务器-客户端通信 UDP&#xff08;User Datagram Protocol&#xff09;是一种面向无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。与TCP&#xff08;Transmission Control Protocol&#xff09;不同&#xff0c;UDP不建立连接&#xff0c;…

基于Kettle开发的web版数据集成开源工具(data-integration)-部署篇

目录 &#x1f4da;第一章 前言&#x1f4d7;背景&#x1f4d7;目的&#x1f4d7;总体方向 &#x1f4da;第二章 下载编译&#x1f4d7;下载&#x1f4d7;编译 &#x1f4da;第三章 部署&#x1f4d7;准备工作&#x1f4d5; 安装数据库&redis&consul&#x1f4d5; 修改…

鼠标驱动框架:模拟键盘按键

/* 参考: drivers\hid\usbhid\usbmouse.c */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb.h> #include <linux/input.h> #include <linux/hid.h>st…

计算机毕业设计-------基于JSP+Servlet的毕业生离校管理系统

需求分析 使用JSPServletMysql技术设计一个毕业生离校管理系统, 整个系统采用BS架构, 为高校方便进行毕业生离校流程进行统一的离校流程, 极大的减少了大量学生同时离校的过程中杂乱的情况, 整个系统分为学生, 教务处, 辅导员, 图书馆, 宿管, 财务处, 系办公室, 管理员登等角色…

Vue.observable你有了解过吗?

一、Observable 是什么 Observable 翻译过来我们可以理解成可观察的 我们先来看一下其在Vue中的定义 Vue.observable&#xff0c;让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象 返回的对象可以直接用于渲染函数和计算属性内&#xff0c;并且会在发生变…

【华为机试】2023年真题B卷(python)-考古问题

一、题目 题目描述&#xff1a; 考古问题&#xff0c;假设以前的石碑被打碎成了很多块&#xff0c;每块上面都有一个或若干个字符&#xff0c;请你写个程序来把之前石碑上文字可能的组合全部写出来&#xff0c;按升序进行排列。 二、输入输出 三、示例 示例1: 输入输出示例仅供…

了解Apache 配置与应用

本章内容 理解 Apache 连接保持 掌握 Apache 的访问控制 掌握 Apache 日志管理的方法 Apache HTTP Server 之所以受到众多企业的青睐&#xff0c;得益于其代码开源、跨平台、功能 模块化、可灵活定制等诸多优点&#xff0c;不仅性能稳定&#xff0c;在安全性方面的表现也十分…

【设计模式-2】原型模式的原理、代码实现及类图展示

我们一定对类的实例化比较熟悉&#xff0c;前面我们说的单例、还有3种工厂模式都是通过new关键字来创建对象&#xff0c;下面我们来了解一种新的对象创建的方式。 1. 定义 原型模式也是一种创建型的设计模式&#xff0c;实现和原理总体比较简单&#xff0c;一句话总结呢&#…

Weblogic安全漫谈(二)

前言 继本系列上篇从CVE-2015-4852入手了解T3协议的构造后&#xff0c;本篇继续分析开启T3反序列化魔盒后的修复与绕过。 Weblogic对于10.3.6推出了p20780171和p22248372用于修复CVE-2015-4852&#xff0c;在补丁详情中又提示了p21984589是它的超集&#xff0c;所以可以直接装…

kubeadm

kubeadm快速搭建一个k8s小集群 二进制搭建适合搭建大集群&#xff08;50台以上主机&#xff09; kubeadm更适合中小企业的业务集群 master 120.168.233.70 dockerkubelet kubeadm kubectl flannel node01 120.168.233.80 dockerkubelet kubeadm kubectl flannel node02 …

通过软盘拷贝文件 - 华为OD统一考试

OD统一考试(B卷) 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究但此电脑除了有一个3.5寸软盘驱动器以外&#xff0c;没有任何手段可以将文件持贝出来&#xff0c;而且只有一张软盘可以…

MySQL将多条数据合并成一条的完整示例

数据库中存的是多条数据&#xff0c;展示的时候需要合并成一条 数据表存储形式如下图 以type分组&#xff0c;type相同的算一条&#xff0c;且保留image和link的所有数据&#xff0c;用groupBy只保留一条数据 解决方案&#xff1a;用GROUP_CONCAT 完整语法如下 group_concat…

Python是怎么调用接口的

在Python中调用接口可以使用多种方式&#xff0c;以下是其中几种常用的方法&#xff1a; 使用标准库中的urllib模块或第三方库requests发送HTTP请求。首先需要导入对应的库&#xff0c;然后使用相应的函数发送请求&#xff0c;并获得返回的结果。 例如&#xff0c;在使用requ…