SpringBoot常用注解与注意事项

Spring Boot 是一个用于快速开发、运行和管理 Spring 应用程序的框架。它大量使用了注解(Annotations)来简化配置和开发流程。

以下是一些 Spring Boot 中常用的注解及其注意事项:

1.常用注解

  1. @SpringBootApplication

    • 这是一个组合注解,用于启动 Spring Boot 应用。它包括 @Configuration@EnableAutoConfiguration 和 @ComponentScan
    • 注意:它通常放在主类上。
    • @Configuration
      • @Configuration 注解表示一个类作为 Spring 的配置类,它的作用等同于 Spring 的 XML 配置文件。在这个类中,你可以通过声明 @Bean 注解的方法来定义 Bean。
      • 被 @Configuration 标记的类会被 Spring 容器处理,以检测类内部的 @Bean 方法。
      • 这个注解的作用是简化 Spring 的 Java 配置,使得配置更加直观和类型安全。
    • @EnableAutoConfiguration

      • @EnableAutoConfiguration 注解告诉 Spring Boot 根据添加的 jar 依赖自动配置你的 Spring 应用。例如,如果类路径下有 Spring MVC 的依赖,Spring Boot 会自动配置你的应用为一个 Spring MVC 应用。
      • 这个注解会自动载入应用程序所需的所有 Bean,这依赖于 Spring Boot 在类路径中的查找。
      • 如果你想要关闭特定的自动配置,可以使用 @EnableAutoConfiguration(exclude={Class1.class, Class2.class}) 来排除它们。
    • @ComponentScan

      • @ComponentScan 注解用于自动检测和注册 Spring 组件(如 @Component@Service@Repository@Controller 等)。
      • 这个注解会扫描指定包路径下的类,并检测这些类上是否有 Spring 的组件注解,如果有,则将其注册为 Spring 容器中的 Bean。
      • 你可以通过 basePackages 属性或者 basePackageClasses 属性来指定 @ComponentScan 的扫描范围。
  2. @Component@Service@Repository

    • 用于标记类作为 Spring 的组件,@Service 和 @Repository 是 @Component 的特化。
    • 注意:这些类会被自动扫描并注册为 Spring 应用上下文中的 Bean。
  3. @Autowired

    • 用于自动装配依赖。
    • 注意:过度使用可能会导致依赖关系不明确。
  4. @RestController 和 @Controller

    • @RestController 是 @Controller 和 @ResponseBody 的组合,表示该类的所有方法返回值直接作为 HTTP 响应体。
    • 注意:@Controller 需要配合 @ResponseBody 或返回 View 对象。
  5. @RequestMapping 和 @GetMapping@PostMapping

    • 用于映射 HTTP 请求到控制器方法。
    • 注意:@GetMapping 和 @PostMapping 是 @RequestMapping 的特化。
  6. @PathVariable@RequestParam@RequestBody

    • 用于处理请求参数。
    • 注意:@PathVariable 用于 URL 路径,@RequestParam 用于查询参数,@RequestBody 用于请求体。
  7. @Configuration

    • 用于标记配置类。
    • 注意:该类中的方法会被认为是 Bean 定义,并注册到 Spring 应用上下文中。
  8. @Bean

    • 用于在配置类中定义 Bean。
    • 注意:方法名默认为 Bean 的 ID。
  9. @Profile

    • 用于指定配置文件。
    • 注意:只有在该配置文件激活时,标记的 Bean 或配置才会生效。
  10. @EnableAutoConfiguration

    • 启用自动配置。
    • 注意:这可能会导致一些不期望的自动配置,可以通过 @SpringBootApplication(exclude={...}) 来排除。

2.注意事项

  1. 依赖注入

    • 推荐使用构造器注入,它能够保证所需的依赖不会被忽略,并且构造器注入的组件总是被完全初始化。
  2. 配置文件

    • Spring Boot 支持多种外部化配置,如 YAML、属性文件等。推荐使用 YAML 因为它的结构更加清晰。
  3. 条件注解

    • 如 @ConditionalOnProperty@ConditionalOnClass 等,用于在满足特定条件时创建 Bean 或启用配置。
  4. 测试

    • Spring Boot 提供了 @SpringBootTest 等注解,用于测试。注意测试时模拟环境和真实环境可能会有所不同。
  5. 性能

    • 使用 @Async 标记异步方法,但要注意线程管理和异步结果的处理。
  6. 安全性

    • 使用 @EnableGlobalMethodSecurity 等注解来增强方法的安全性。
  7. 细节方面
  1. 需要添加@EnableAutoConfiguration注解或@SpringBootApplication注解启动自动配置。
  2. 需要在pom.xml文件中引入相应的依赖。
  3. 需要配置application.properties或application.yml文件来配置应用程序的属性。
  4. 需要使用@RestController注解而不是@Controller注解来标注Controller类,以便自动将方法的返回值转换为JSON数据。
  5. 需要在方法上添加@ResponseBody注解以便将方法的返回值转换为JSON数据返回给客户端。
  6. 需要在方法上添加@RequestMapping注解来标注请求的URL路径。
  7. 需要在方法的参数上添加@RequestParam、@PathVariable或@RequestBody注解来标注请求的参数。

这些只是 Spring Boot 中注解的一部分,实际使用时还需要结合具体场景和需求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony 项目实战:智能体重秤

一、简介 本 demo 基于 OpenHarmony3.1Beta 版本开发,该样例能够接入数字管家应用,通过数字管家应用监测体重秤上报数据,获得当前测量到的体重,身高,并在应用端形成一段时间内记录的体重值,以折线图的形式…

vivado Aurora 8B/10B IP核(4)-数据流接口(Streaming Interface)

Streaming 接口 Transmitting and Receiving Data(发送和接收数据) 流式接口允许将Aurora 8B/10B通道用作管道。 初始化后,通道始终可用于写入,除非发送时 钟补偿序列。 核心数据传输符合AXI4-Stream协议。当s_axi_tx_tvalid被取…

OpenHarmony 实战开发——分布式购物车案例展示~

简介 分布式购物车demo 模拟的是我们购物时参加满减活动,进行拼单的场景;实现两人拼单时,其他一人添加商品到购物车,另外一人购物车列表能同步更新,且在购物车列表页面结算时,某一人结算对方也能实时知道结…

基于单片机的多功能电子万年历系统

摘要:该题目要求学生综合运用单片机原理、低频电子线路、数字电路与逻辑设计等相关知识,设计完成多功能电子万年历系统。通过完成设计任务,使学生掌握单片机设计开发的基本流程,增强学生动手实践能力,培养学生分析和解决实际问题的能力,为后续课程的学习和工作打下良好基础。 关…

特征的前期融合与后期融合在召回、粗排、精排应用

前期融合:先对所有特征做concat,再输入DNN,一般常见于精排模型 特点:线上推理代价大,若有n个候选item需要做n次模型计算 后期融合:把用户和物品特征分别输入不同的神经网络,不对用户和物品做融…

基于Springboot的玩具租赁系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的玩具租赁系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

多用户商城系统哪个好,2024多用户商城系统这样选

在2024年选择适合的多用户商城系统是一项至关重要的决策,因为一个优秀的商城系统不仅可以提升用户体验,还能够帮助企业实现业务目标并取得长期成功。然而,在众多的选择中挑选出最适合的一个并不容易,需要综合考虑各种因素&#xf…

static page 项目

static page 项目 作者:不染心 博客地址:https://blog.csdn.net/qq_38234785 源码地址:https://mbd.pub/o/bread/ZpWVlJps 未经允许,不得转载 文档版本v1,还没写完持续更新 一、引言 1. 软件概述和背景 本软件是…

Python-软件设计-“帮助”小孩子自我行为(电脑端看短视频)约束

目录 前言一、方式一:网站访问拦截二、方式二:SW(电脑软件简称)启动拦截三、使用代码的方式将方式一和方式二结合成自动化程序部署四、其他拓展知识1.程序打包2、开机自启文件夹 五、报错的解决方式1、打包成软件后,运行那个软件时不执行或报…

【论文阅读】ViTAE:Vision transformer advanced by exploring intrinsic inductive bias

ViTAE:Vision transformer advanced by exploring intrinsic inductive bias 论文地址摘要:简介:3 方法论3.1 重温视觉变压器3.2 ViTAE3.3 缩减单元3.4 Normal cell3.5 模型细节 4 训练4.1 Implementation details4.2 Comparison with the state-of-the-…

Linxu系统服务管理,systemd知识/进程优先级/平均负载/php进程CPU100%怎么解决系列知识!

shell脚本(命令)放后台 sleep 300& 放到后台运行,脚本或命令要全路径 nohup:用户推出系统进程继续工作 【功能说明】 nohup 命令可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端 如…

华为鸿蒙应用--封装通用标题栏:CommonTitleBar(鸿蒙工具)-ArkTs

0、效果图 自定义通用标题栏 支持左、中、右常规标题栏设置; 支持自定义视图; 支持搜索功能 一、CommTitleBar代码 import router from ohos.router; import { Constants } from ../../constants/Constants; import { StyleConstants } from ../../…

PostgreSQL 把多余字段转JSON

核心SQL: json_agg(json_build_object(kgrq, a.kgrq, jgrq, a.jgrq, sgdd, a.sgdd))

理解与使用Linux设备树编译器(DTC)

这里写目录标题 设备树简介设备树编译器(DTC)安装DTC使用DTC实例:编辑设备树小结参考资料 Linux设备树编译器(DTC)是一个关键工具,用于处理嵌入式Linux系统中的设备树文件。本文将介绍设备树的概念、DTC的基…

基于Docker + Locust的数据持久化性能测试系统

前几天给大家分享了如何使用Locust进行性能测试,但是在实际使用中会发现存在压测的结果无法保存的问题,比如在分布式部署情况下进行压测,每轮压测完成需要释放资源删除容器重新部署后,这段时间的压测结果就都丢失了,如…

一文讲解Android车载系统camera架构 - EVS

Android的camera开发中,使用最多的是camera2 以及现在Google主推的cameraX 架构,而这两个架构主要针对的是手机移动端上camera的流程。 而今天介绍的EVS(Exterior View System)架构是不同于camera2上的手机架构,针对Automotive的版本&#x…

【源码阅读】 Golang中的database/sql库源码探究

Note:文章待完结 文章目录 前言一、整体目录结构二、driver包1、驱动相关driver.Driver2、驱动连接:driver.Conn3、预处理结构:Stmt4、执行结果 driver.Result5、查询结果:driver.Rows6、driver.RowsAffected7、driver.Value8、Va…

vue-quill-editor富文本插件控制字数显示

最终效果 富文本编辑框&#xff0c;只统计内容&#xff0c;不包含标签以及样式&#xff0c;超出最大字数限制提示。 具体代码 html <div class"relative"><quillEditorv-model"form.nutriSuggestion"ref"myQuillEditor7":options&quo…

03-JAVA设计模式-策略模式

策略模式 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是行为设计模式之一&#xff0c;它使你能在运行时改变对象的行为。在策略模式中&#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中&#xff0c;…

uniapp微信小程序开发踩坑日记:由于图表数据渲染不出来,我第一次在项目中用watch函数监听数据变化

一、发现问题 在我们团队自己开发的微信小程序中&#xff0c;引入了Echarts图表库 然后突然有一天&#xff0c;后端队友反应图表渲染有问题。后面我去试了一下&#xff0c;确实20次里面必有一次数据渲染不出来 断定代码没问题&#xff0c;于是我们将其鉴定为玄学 二、问题原因…