【JAVA进阶篇教学】第七篇:Spring中常用注解

博主打算从0-1讲解下java进阶篇教学,今天教学第七篇:Spring中常用注解

在Java Spring框架中,注解(Annotation)是一种元数据,它提供了关于程序代码的额外信息,这些信息可以用于编译时检查、运行时处理或者在部署时生成配置文件。注解可以被应用在类、方法、字段等地方,用于提供额外的配置信息或者标记某些特性。下面我将介绍几个常用的Spring注解,并提供详细说明和代码示例。

目录

一、常用注解 

1.@Component

2.@Autowired

3.@Controller

4.@Service

5.@Repository

6.@RequestMapping

7.@Configuration

8.@Bean

9.@Value

10.@Profile

11.@Qualifier

12.@Transactional

13.@Aspect

14.@ResponseBody

15.@RestController

16.@PathVariable

17.@RequestParam

18.@RequestBody

19.@GetMapping

20.@PostMapping


一、常用注解 

1.@Component

@Component 是 Spring 框架中最常用的注解之一,它用于将一个 Java 类标识为 Spring 管理的组件,让 Spring 容器自动扫描并注册该组件。

@Component
public class MyComponent {// 类的具体实现
}

2.@Autowired

@Autowired 注解用于自动装配 Spring Bean,它可以在需要依赖注入的地方使用,让 Spring 框架自动将符合类型的 Bean 注入到对应的变量中。

@Component
public class MyComponent {private MyService myService;@Autowiredpublic MyComponent(MyService myService) {this.myService = myService;}// 其他方法使用 myService
}

3.@Controller

@Controller 注解用于标识一个类是 Spring MVC 中的 Controller,它处理用户请求并返回相应的视图或数据。

@Controller
public class MyController {@GetMapping("/hello")public String hello() {return "hello";}
}

4.@Service

@Service 注解用于标识一个类是服务层组件,通常用于业务逻辑的处理。

@Service
public class MyService {public void doSomething() {// 业务逻辑处理}
}

5.@Repository

@Repository 注解用于标识一个类是数据访问层的组件,通常用于数据库操作。

@Repository
public class MyRepository {public void save(MyEntity entity) {// 数据库操作}
}

6.@RequestMapping

@RequestMapping 注解用于映射请求路径到具体的处理方法,可以用在 Controller 类或方法上。

@Controller
@RequestMapping("/api")
public class MyController {@GetMapping("/hello")public String hello() {return "hello";}
}

7.@Configuration

@Configuration 注解用于标识一个类是配置类,它通常和 @Bean 注解一起使用,用于配置 Spring 容器。

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

8.@Bean

@Bean 注解用于在配置类中定义一个 Bean,Spring 容器会根据该方法返回的对象来注册 Bean。

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

9.@Value

@Value 注解用于将配置文件中的值注入到变量中。

@Component
public class MyComponent {@Value("${my.property}")private String myProperty;// 其他方法使用 myProperty
}

10.@Profile

@Profile 注解用于指定在特定环境下才激活的 Bean。

@Configuration
@Profile("dev")
public class DevConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

11.@Qualifier

@Qualifier 注解用于指定注入的 Bean 的名称。

@Component
public class MyComponent {@Autowired@Qualifier("myService")private MyService myService;// 其他方法使用 myService
}

12.@Transactional

@Transactional 注解用于声明事务管理。

@Service
public class MyService {@Autowiredprivate MyRepository myRepository;@Transactionalpublic void saveEntity(MyEntity entity) {myRepository.save(entity);}
}

13.@Aspect

@Aspect 注解用于声明一个切面,用于定义横切关注点和通知类型(例如前置通知、后置通知等)。

@Aspect
@Component
public class LoggingAspect {@Before("execution(* com.example.service.*.*(..))")public void beforeAdvice(JoinPoint joinPoint) {// 在方法执行前执行的逻辑}
}

14.@ResponseBody

@ResponseBody 注解用于将方法的返回值直接作为 HTTP 响应体返回。

@Controller
public class MyController {@GetMapping("/hello")@ResponseBodypublic String hello() {return "Hello, world!";}
}

15.@RestController

@RestController 注解是 @Controller 和 @ResponseBody 的组合,用于标识一个类是 RESTful 控制器。

@RestController
public class MyRestController {@GetMapping("/api/hello")public String hello() {return "Hello, world!";}
}

16.@PathVariable

@PathVariable 注解用于从 URL 中获取参数值。

@RestController
@RequestMapping("/api")
public class MyRestController {@GetMapping("/hello/{name}")public String hello(@PathVariable String name) {return "Hello, " + name + "!";}
}

17.@RequestParam

@RequestParam 注解用于从请求参数中获取值。

@RestController
@RequestMapping("/api")
public class MyRestController {@GetMapping("/hello")public String hello(@RequestParam String name) {return "Hello, " + name + "!";}
}

18.@RequestBody

@RequestBody 注解用于将 HTTP 请求体中的数据绑定到方法的参数上,通常用于处理 POST 或 PUT 请求中的 JSON 数据。

@RestController
@RequestMapping("/api")
public class MyRestController {@PostMapping("/user")public String createUser(@RequestBody User user) {// 处理接收到的用户信息return "User created successfully!";}
}

19.@GetMapping

@GetMapping 注解用于将 HTTP GET 请求映射到特定的处理方法上。

@Controller
public class MyController {@GetMapping("/hello")public String hello() {return "hello";}
}

20.@PostMapping

@PostMapping 注解用于将 HTTP POST 请求映射到特定的处理方法上。

@RestController
@RequestMapping("/api")
public class UserController {@PostMapping("/user")public String createUser(@RequestBody User user) {// 处理接收到的用户信息return "User created successfully!";}
}

以上是一些常用的 Spring 注解,它们可以帮助我们更方便地开发和管理 Spring 应用程序。通过合理地使用注解,可以让代码更简洁、可读性更高,同时提高开发效率。

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

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

相关文章

正则表单校验的几种场景

概览 在前端开发中,经常需要进行表单校验,尤其是对于复杂的校验,正则的应用更是个绕不开的话。下面主要从开头和结尾条件如何限制、匹配符合条件的长度限制、至少包含一个符合条件、校验提示精确到具体的校验 四种场景去展开梳理。 一. 开头…

【国信华源北斗型雨量站新品亮相第三届防汛抗旱抢险新技术新产品展示会】

4月24—25日,第三届防汛抗旱抢险新技术、新产品应用研讨与展示会暨中国水利企业协会防灾与抢险装备技术分会年会在河南郑州召开。由《中国防汛抗旱》杂志社、水利部防洪抗旱减灾工程技术研究中心主办,围绕我国防汛抗旱形势、防灾与抢险新技术新产品现状和…

vue2实现字节流byte[]数组的图片预览

项目使用vantui框架&#xff0c;后端返回图片的字节流byte[]数组&#xff0c;在移动端实现预览&#xff0c;实现代码如下&#xff1a; <template><!-- 附件预览 --><div class"file-preview-wrap"><van-overlay :show"show"><…

【Markdown笔记】——设置markdown中文字的颜色

【Markdown笔记】——设置markdown中文字的颜色 Markdownmarkdown中设置文字颜色常用颜色对照表【含RGB值对照】 &#x1f49d;&#x1f49d;&#x1f49d; 欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#x…

笔记:能量谱密度与功率谱密度(二)

目录 一、ESD与PSD的定义、单位、性质 二、对ESD与PSD的直观理解 三、总结&#xff1a; 某物理量的“分布”在离散系统中&#xff0c;各点(纵坐标含义&#xff09;的物理意义仍然是该物理量&#xff0c;而在连续系统中&#xff0c;各点&#xff08;纵坐标含义&#xff09;的物…

实战干货|Spark 在袋鼠云数栈的深度探索与实践

Spark 是一个快速、通用、可扩展的大数据计算引擎&#xff0c;具有高性能、易用、容错、可以与 Hadoop 生态无缝集成、社区活跃度高等优点。在实际使用中&#xff0c;具有广泛的应用场景&#xff1a; 数据清洗和预处理&#xff1a;在大数据分析场景下&#xff0c;数据通常需要…

后台架构总结

前言 疫情三年&#xff0c;全国各地的健康码成为了每个人的重要生活组成部分。虽然过去一年&#xff0c;但是回想起来任然历历在目。 今天我就通过当时基于小程序的健康码架构&#xff0c;来给大家讲一下如何基于java&#xff0c;springboot等技术来快速搭建一个后台业务系统…

CMUS狮身人面像(四)-构建语言模型

构建语言模型 语言模型是配置的重要组成部分&#xff0c;它告诉解码器可以识别哪些单词序列。 模型有多种类型&#xff1a;关键词列表、语法和统计语言模型以及语音语言模型。它们具有不同的功能和性能特性。您可以根据需要选择任何解码模式&#xff0c;甚至可以在运行时在模…

Python基础知识—函数(五)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 一:函数基础1.1函数的定义和调用1.2函数的定义格式1.3函数的调用格式1.4第一个函数 二:函数的文档注释三:函数的参数3.1参数的定义和…

Pixelmator Pro for Mac:简洁而强大的图像编辑软件

Pixelmator Pro for Mac是一款专为Mac用户设计的图像编辑软件&#xff0c;它集简洁的操作界面与强大的功能于一身&#xff0c;为用户提供了卓越的图像编辑体验。 Pixelmator Pro for Mac v3.5.9中文激活版下载 该软件支持多种文件格式&#xff0c;包括常见的JPEG、PNG、TIFF等&…

系统触发器

目录 数据库触发器 常见触发器&#xff0c;记录登录和退出数据库事件 模式触发器 创建一个模式触发器&#xff0c;记录各种 DDL 操作的日志 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 前面已经介绍过&#xff0c;…

WEB攻防-PHP特性-函数缺陷对比

目录 和 MD5函数 intval ​strpos in_array preg_match str_replace 和 使用 时&#xff0c;如果两个比较的操作数类型不同&#xff0c;PHP 会尝试将它们转换为相同的类型&#xff0c;然后再进行比较。 使用 进行比较时&#xff0c;不仅比较值&#xff0c;还比较变量…

MATLAB非均匀网格梯度计算

在matlab中&#xff0c;gradient函数可以很方便的对均匀网格进行梯度计算&#xff0c;但是对于非均匀网格&#xff0c;但是gradient却无法求解非均匀网格的梯度&#xff0c;这一点我之前犯过错误。我之前以为在gradient函数中指定x&#xff0c;y等坐标&#xff0c;其求解的就是…

秋招后端开发面试题 - Java集合

目录 Java集合前言面试题Java 集合&#xff1f;说说 List、Set、Queue、Map 四者的区别&#xff1f;集合框架底层数据结构总结&#xff1f;ArrayList 和 Vector 的区别?ArrayList 与 LinkedList 区别?ArrayList 核心扩容机制&#xff1f;ArrayList 怎么序列化的知道吗&#x…

Metasploit 溢出 samba 提权漏洞

一、信息收集 1.1 右键单击桌面&#xff0c;选择 Open Terminal Here &#xff0c;打开终端。 1.2 输入命令 nmap -sS -p 139,445 -A 192.168.1.254 ,对目标主机进行扫描,发现 139、445 端口开放。 1.3 输入命令“msfconsole”&#xff0c;启动 MSF 终端。 1.4 输入命令“searc…

电脑录制视频快捷键,一键开启录屏新时代(干货)

“最近尝试录制一些电脑上的操作视频&#xff0c;用来制作教学教程。不过&#xff0c;每次录制都要通过菜单或搜索来打开录屏软件&#xff0c;实在是有些繁琐。有没有人知道哪些电脑录制视频的快捷键呀&#xff1f;或者有没有通用的快捷键设置方法&#xff1f;” 在当今数字时…

Elasticsearch索引状态管理实战指南

在维护Elasticsearch集群的过程中&#xff0c;有效地管理索引状态对于确保系统性能、节省资源以及优化数据处理流程至关重要。本文将深入介绍Elasticsearch提供的关键索引管理操作&#xff0c;包括清空缓存、刷新索引、冲洗索引、强制合并、关闭索引及冻结索引等&#xff0c;帮…

免费语音转文字:自建Whisper,贝锐花生壳3步远程访问

Whisper是OpenAI开发的自动语音识别系统&#xff08;语音转文字&#xff09;。 OpenAI称其英文语音辨识能力已达到人类水准&#xff0c;且支持其它98中语言的自动语音辨识&#xff0c;Whisper神经网络模型被训练来运行语音辨识与翻译任务。 此外&#xff0c;与其他需要联网运行…

MySQL中脏读与幻读

一般对于我们的业务系统去访问数据库而言&#xff0c;它往往是多个线程并发执行多个事务的&#xff0c;对于数据库而言&#xff0c;它会有多个事务同时执行&#xff0c;可能这多个事务还会同时更新和查询同一条数据&#xff0c;所以这里会有一些问题需要数据库来解决 我们来看…

centos 7使用源码编译安装Python 3.12.2(最新版本)

&#xff08;一&#xff09;、说明 在centos 7上&#xff0c;默认安装出来的python是&#xff1a;2.7.5版本 1.查看python版本&#xff1a; python --version 2.通过yum安装出来的&#xff0c;适合当前操作系统的&#xff0c;最新的python版本是&#xff1a;3.6.8 python3…