Springboot注解知识-文字描述(学习笔记)

2024-04-07 10:44

本文主要是介绍Springboot注解知识-文字描述(学习笔记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、Springboot相关注解
    • 1.前后端交互相关注解
      • 1.Controller
        • 1.1@RestController
      • 2.@RequestMapping("/hello")
      • 3.@RequestParam(name = "username")
      • 4.@DateTimeFormat( pattern="yyyy-MM-dd HH:mm:ss" )
      • 5.@RequestBody
      • 6.@PathVariable
      • 7.@ResponesBody
      • 8.@Component
      • 9.@Autowired
      • 10.@Primary
      • 11.@Quallifier("exampleBean")
      • 12.@Resource

一、Springboot相关注解

1.前后端交互相关注解

1.Controller

作用范围:类
表明这个类是一个Controller类,用于将一个类标识为控制器。在MVC(模型-视图-控制器)架构中,控制器负责处理用户的请求,调用相应的模型(业务逻辑)和视图(数据显示),并返回响应给用户。在Web应用程序中,这意味着控制器会接收HTTP请求,并根据请求的内容决定调用哪些服务或数据访问代码,以及最终渲染哪个页面或响应给用户。

具体来说,使用@Controller注解的类通常会包含一个或多个方法,这些方法映射到特定的URL路径上。当用户访问这些路径时,对应的方法会被执行。这些方法可以进一步与@RequestMapping或其他相关注解结合使用,以指定具体的请求类型(如GET、POST等)和路径变量。


1.1@RestController

作用范围:类
@RestController是一个方便的注解,用于创建RESTful Web服务的控制器类

@RestController是Spring框架中的一个注解,它结合了@Controller和@ResponseBody的功能,用于简化RESTful Web服务的开发。具体来说,@RestController有以下几个特点:

  • 自动序列化返回值:使用@RestController注解的类中的方法返回的对象会自动被序列化为JSON格式,并作为HTTP响应的内容返回给客户端。这意味着开发者不需要在每个方法上添加@ResponseBody注解来指定返回JSON数据。
  • 支持HTTP请求处理方法:与其他控制器注解一样,@RestController标记的类可以包含处理HTTP请求的方法,这些方法可以通过不同的请求映射注解(如@GetMapping、@PostMapping等)来处理不同类型的HTTP请求。
  • 组件扫描:@RestController也是一个构造型注解,它允许Spring的组件扫描功能发现并注册这个类为一个Bean,使其成为Spring应用程序上下文的一部分。

与@Controller相比,@RestController更适合用于构建API接口,因为它默认所有的方法都是返回数据而不是视图名称。而@Controller通常用于返回视图名称,需要配合@ResponseBody使用才能返回数据。

总结来说,@RestController是Spring MVC中用于快速开发RESTful API的注解,它通过简化配置和自动处理JSON数据的返回,使得开发Web服务变得更加高效。

2.@RequestMapping(“/hello”)

作用方式:类,方法
在Spring MVC框架中,@RequestMapping注解扮演着至关重要的角色,它定义了Web请求如何映射到具体的处理器方法上。@RequestMapping是Spring MVC中用于定义请求映射的核心注解,它通过指定请求的路径、方法和参数等信息,将HTTP请求正确地路由到相应的处理逻辑。

  • 作用域:@RequestMapping可以应用在类级别和方法级别。在类级别上使用时,它定义了该类中所有处理方法的基本路径(父路径)。而在方法级别上使用时,它定义了特定方法的具体路径。
  • 属性:@RequestMapping注解包含多个属性,其中最常用的是value和method。value属性用于指定请求的实际地址,而method属性用于指定请求的HTTP方法类型(如GET、POST等)。
  • 路径变量:在使用@RequestMapping时,可以通过路径变量来捕获URL中的一部分作为参数传递给方法。这通常是通过在路径中使用花括号{}来实现的。
  • 正则表达式:还可以使用正则表达式来定义请求路径,这样可以提供更灵活的匹配规则。
  • 占位符:在定义路径时,可以使用占位符来表示路径中的动态部分,这些占位符可以在运行时被实际的值替换。
  • 配置要求:为了使@RequestMapping注解生效,需要在Spring配置文件中进行相应的配置,例如启用注解驱动的配置项<mvc:annotation-driven/>
  • 版本变化:随着Spring框架的发展,特别是在Spring 4.3之后,引入了一些新的方法级别的注解,如@GetMapping、@PostMapping等,这些注解简化了@RequestMapping的使用,使其更加简洁易读。
@Controller
public class MyController {@RequestMapping("/hello")public String helloWorld() {return "hello"; // 这里的"hello"通常对应于一个名为"hello.jsp"的视图页面}
}

3.@RequestParam(name = “username”)

作用方式:参数

@RequestParam注解的主要作用是将HTTP请求中的参数映射到控制器方法的参数上。这样,当一个HTTP请求到达时,Spring MVC可以根据@RequestParam注解的指示,将请求中相应的参数值传递给方法的参数。以下是@RequestParam注解的一些关键属性和用法:

  • value/name:这是@RequestParam注解的必需属性,用于指定请求参数的名称。方法参数上的@RequestParam注解的值必须与请求中的实际参数名称相匹配。name属性和value属性没有区别,它们是等价的,都用于指定请求参数的名称。
    这两种写法在功能上是完全相同的。在早期的Spring版本中,通常使用value属性来指定参数名称。自Spring 4.2之后,为了更清晰地表达参数的来源(即请求参数),推荐使用name属性。然而,由于它们是别名关系,即使在一个方法中使用了name和value属性,也不会产生冲突或错误,只要它们的值是一致的。但是,为了避免混淆,建议只选择其中一个属性来使用,并且在项目中保持一致性。
  • required:这个属性用于指定请求参数是否是必需的。默认情况下,required设置为true,意味着如果请求中没有包含指定的参数,将会抛出异常。如果设置为false,即使请求中缺少该参数,也不会抛出异常。
  • defaultValue:这个属性允许你为参数提供一个默认值。如果请求中没有提供该参数,或者提供了但值为空字符串,那么就会使用这个默认值。
  • multiple:当需要接收多个相同名称的参数时,可以使用这个属性。例如,如果你的请求中有一个名为"ids"的参数,并且可能有多个值,你可以在方法参数上使用List或数组类型,并加上@RequestParam注解来接收这些值。

@RequestParam通常与GET请求一起使用,但也可用于处理POST请求中的表单数据。它与@PathVariable注解不同,后者用于从URL路径中提取变量,而@RequestParam则是从查询字符串或表单数据中提取参数。

在实际开发中,@RequestParam注解可以帮助你方便地获取客户端发送的数据,无论是查询参数、表单提交的数据还是多个参数值。这使得数据处理变得更加灵活和方便,是Spring MVC中处理HTTP请求不可或缺的一部分。


4.@DateTimeFormat( pattern=“yyyy-MM-dd HH:mm:ss” )

作用方式:参数
@DateTimeFormat( pattern="yyyy-MM-dd HH:mm:ss" )是一个Java注解,用于指定日期时间的格式。它通常用于Spring框架中的控制器方法参数或模型属性上,以控制日期时间的显示和解析方式。

在Spring MVC中,@DateTimeFormat注解可以应用于控制器方法的参数或模型属性上,用于定义日期时间字段的格式化样式。通过设置pattern属性,可以指定日期时间的格式模式,例如"yyyy-MM-dd HH:mm:ss"表示年-月-日 时:分:秒的格式。

下面是一个示例代码片段,展示了如何在控制器方法中使用@DateTimeFormat注解:

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;@RestController
public class MyController {@PostMapping("/save")public String saveData(@RequestBody @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date date) {// 处理保存数据的逻辑return "Data saved successfully!";}
}

在上面的例子中,@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")注解应用于saveData方法的参数date上。这表示当客户端发送一个包含日期时间数据的请求时,Spring MVC将使用指定的模式(“yyyy-MM-dd HH:mm:ss”)来解析日期时间的值。
需要注意的是,@DateTimeFormat注解还可以应用于模型属性上,以便在视图中正确地显示日期时间数据。

总结起来,@DateTimeFormat( pattern="yyyy-MM-dd HH:mm:ss" )注解用于指定日期时间的格式,以便在Spring MVC中正确地显示和解析日期时间数据。


5.@RequestBody

作用方式:参数
@RequestBody是Spring框架中的一个注解,主要用于接收来自前端的JSON或XML格式的数据,通常用于处理HTTP POST请求中的请求体数据

在Web开发中,当客户端向服务器发送请求时,可以通过GET方法将参数附加到URL上,或者通过POST方法将数据放在请求体中。@RequestBody注解通常与POST请求一起使用,因为GET请求没有请求体。这个注解告诉Spring框架,方法参数是一个对象,该对象应该从请求体中反序列化得到。这样,客户端可以发送一个包含复杂数据的请求,服务器端可以将这些数据自动映射到Java对象中。

例如,如果客户端发送一个包含用户信息的JSON字符串,服务器端的控制器方法可能会这样定义:

@PostMapping("/users")
public User createUser(@RequestBody User user) {// ... 保存用户信息到数据库等操作return user;
}

在上面的例子中,@RequestBody注解用于createUser方法的参数user上。这表示当客户端发起一个POST请求到/users路径时,请求体中的JSON数据将被自动转换为User对象,然后传递给createUser方法。

总结来说,@RequestBody是Spring MVC中用于处理HTTP请求体数据的重要注解,它使得从请求中获取和处理复杂数据变得简单方便。


6.@PathVariable

作用方式:参数
在Spring MVC中,@PathVariable是一个用于处理请求URI映射中的模板变量的注解,并将其绑定到Controller方法参数上。它的主要作用是将URL中的路径参数(Path parameters)映射到方法的参数上,以便在方法体内部使用这些参数值。通常与@RequestMapping或@GetMapping等注解一起使用,用于定义RESTful API的端点。

以下是@PathVariable的一些典型用法:

  • 标识具有ID的实体的端点:例如,如果你想通过一个唯一的ID来获取用户的信息,你可以在URL中设置一个占位符,并使用@PathVariable将该占位符的值传递给方法参数。这样,你就可以在方法内部根据这个ID来查找用户信息。
  • 自定义变量名:你可以在@PathVariable注解中指定一个名称,这个名称必须与URL中的占位符名称相匹配。这样,你就可以在方法参数中使用这个指定的名称来接收对应的值。

需要注意的是,@PathVariable通常用于处理GET请求中的路径参数,而不是POST请求中的请求体数据。对于POST请求中的请求体数据,应使用@RequestBody注解来处理。

总结来说,@PathVariable是Spring MVC中用于处理URL路径参数的一个重要注解,它使得从URL中提取参数并在Controller方法中使用这些参数变得简单方便。


7.@ResponesBody

作用方式:类,方法
@ResponseBody是Spring框架中的一个注解,用于指示方法的返回值应该被绑定到HTTP响应体,并自动转换为适合在Web上传输的格式,通常是JSON或XML。

具体来说,@ResponseBody注解的作用是将Controller方法的返回值作为HTTP响应的内容发送给客户端,而不是将其解释为视图名称。这在构建RESTful Web服务时非常有用,因为RESTful服务通常需要返回数据而不是渲染视图。

以下是@ResponseBody的一些典型用法:

  • 返回简单对象:如果方法返回一个对象,例如UserList<User>等,@ResponseBody会将该对象序列化为JSON或XML格式,并将其写入HTTP响应体中。
  • 返回自定义视图:在某些情况下,你可能希望返回自定义的视图或数据结构。通过使用@ResponseBody,你可以返回任何类型的对象,并将其转换为适合在Web上传输的格式。
  • 与@RestController配合使用:在大多数情况下,你不需要显式地使用@ResponseBody,因为@RestController注解已经隐式地包含了它。这意味着如果你使用@RestController注解标记类,那么类中的方法默认都会将返回值绑定到HTTP响应体。

总结来说,@ResponseBody是Spring MVC中用于处理HTTP响应体的注解,它使得从Controller方法返回的数据能够直接作为HTTP响应的内容发送给客户端,而无需经过视图解析器。


8.@Component

作用方式:类
@Component是Spring框架中的一个注解,用于自动检测和配置应用程序中的Bean

@Component是一个类级别的注解,它告诉Spring容器,标记的类应该被视为一个Bean,由Spring容器进行管理。当Spring启动时,它会扫描使用了@Component注解的类,并自动进行实例化和依赖注入。这样,你就可以在其他需要的地方使用@Autowired注解来注入这些Bean,而无需手动配置XML文件。

此外,@Component注解是Spring框架中一系列特殊注解的基础,包括@Service@Repository@Controller等。这些注解都是@Component的衍生注解,它们提供了更具体的语义,帮助开发者区分不同类型的Bean。例如,@Service通常用于服务层组件,@Repository用于数据访问层组件,而@Controller用于Web层的控制器组件。

总结来说,@Component注解是Spring框架中实现自动装配和依赖注入的关键,它使得Bean的管理更加便捷和灵活。在实际开发中,根据组件的职责和作用范围,选择使用@Component或其衍生注解可以更好地组织和管理代码。


9.@Autowired

作用方式:属性
@Autowired是Spring框架中的一个注解,用于实现依赖注入(DI),即自动将Bean装配到需要它们的地方。

具体来说,@Autowired注解可以应用在类的成员变量、方法以及构造函数上,它指示Spring容器在创建Bean时自动将其依赖的其他Bean注入到标注的位置。这样做的好处是减少了手动配置Bean之间的依赖关系,使得代码更加简洁和易于维护。

@Autowired注解默认是按照类型进行自动装配的,这意味着Spring会查找容器中与标注位置类型相匹配的Bean并注入。如果容器中存在多个相同类型的Bean,而你希望按名称进行装配,那么可以配合@Qualifier注解来指定具体的Bean名称。

总结来说,@Autowired是Spring框架中实现自动化依赖注入的关键注解,它通过标注需要依赖注入的位置,让Spring自动完成Bean的装配工作,从而简化了Bean之间的依赖管理。在实际开发中,合理使用@Autowired可以提高代码的可读性和可维护性。


10.@Primary

作用方式:类
@Primary是Spring框架中用于指定首选Bean的注解

在Spring容器中,如果存在多个相同类型的Bean,使用@Primary注解可以明确指定哪个Bean应该被优先注入。这个注解可以应用在类级别或者方法级别,确保在自动装配时,Spring会优先考虑被标记为@Primary的Bean。

具体来说,@Primary的作用包括:

  • 解决歧义性:当有多个Bean实现了相同的接口或者继承了相同的抽象类时,使用@Primary可以避免自动装配时的歧义性,让Spring知道应该选择哪个Bean进行注入。
  • 指定默认Bean:在某些情况下,你可能希望即使存在多个相同类型的Bean,也总是使用同一个Bean。这时,@Primary注解可以帮助你指定一个默认的Bean。
  • 优化依赖注入:通过使用@Primary,你可以更精确地控制Spring容器中的依赖注入过程,确保特定的依赖关系更加清晰和可靠。

总的来说,@Primary注解是Spring框架中一个重要的工具,它帮助开发者在存在多个相同类型Bean时,明确指定首选的Bean,从而优化自动装配的过程。


11.@Quallifier(“exampleBean”)

作用方式:属性
@Qualifier是Spring框架中的一个注解,用于在自动装配时指定具体需要注入的Bean

@Qualifier注解主要解决的是当Spring容器中存在多个相同类型的Bean时,如何精确地指定哪一个Bean应该被注入的问题。@Autowired注解配合使用时@Qualifier可以确保正确选择Bean,避免因多个相同类型的Bean而导致的歧义性问题。

以下是@Qualifier的一些典型用法:

  • 按名称装配:当使用@Autowired进行自动装配时,如果存在多个相同类型的Bean,可以使用@Qualifier注解并指定Bean的名称,来告诉Spring容器注入特定名称的Bean。
  • 细粒度控制@Qualifier不仅能够根据Bean的名称进行装配,还可以结合其他自定义注解,实现更细粒度的控制,如根据特定的属性或条件来选择Bean。
  • 区分相同类型的Bean:在某些情况下,你可能需要在同一容器中维护多个相同类型的Bean,这时@Qualifier可以帮助你区分它们,确保正确的Bean被注入到目标位置。

总结来说,@Qualifier是Spring框架中一个非常有用的注解,它提供了一种机制来明确指定在自动装配时的Bean选择,使得开发者能够更好地管理和维护Spring容器中的Bean。


12.@Resource

作用方式:属性
@Resource是Java平台提供的一个注解,用于依赖注入

@Resource注解与@Autowired注解类似,它们都用于在Spring框架中实现依赖注入。不过,它们之间存在一些差异:

  • 来源不同@Resource注解来源于J2EE,是JDK1.6及以上版本支持的注解。而@Autowired是Spring框架提供的注解。
  • 注入方式不同@Resource默认的注入方式是ByName,即通过Bean的名称进行匹配和注入。而@Autowired默认的注入方式是ByType,即根据类型进行匹配和注入。
  • 注解来源不同@Resource需要导入的包是javax.annotation.Resource,而@Autowired则来自org.springframework.beans.factory.annotation.Autowired包。
  • 使用场景不同@Resource在使用时,如果指定了name属性,则会优先按名称装配;如果没有指定name属性,则会按byName的方式进行装配。而@Autowired则是尝试通过类型来装配合适的组件。

总结来说,@Resource是一个用于依赖注入的注解,它主要基于名称来进行Bean的装配,而@Autowired则主要基于类型。在实际开发中,选择使用哪个注解取决于具体的装配需求和个人或团队的开发习惯。


这篇关于Springboot注解知识-文字描述(学习笔记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882387

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06