SpringBoot常用注解

本文整理了SpringBoot常用注解,主要讲解这些注解的用法,并附上一致思维导图。

SpringBoot常用注解


组件相关注解

@Controller

用于修饰MVC中controller层的组件,SpringBoot中的组件扫描功能会识别到该注解,并为修饰的类实例化对象,通常与@RequestMapping联用,当SpringMVC获取到请求时会转发到指定路径的方法进行处理。

@Service

用于修饰service层的组件,service层组件专注于系统业务逻辑的处理,同样会被组件扫描并生成实例化对象。

@Mapper

用于修饰dao层的组件,dao层组件专注于系统数据的处理,例如数据库中的数据,同样会被组件扫描并生成实例化对象。

@Component

用于修饰SpringBoot中的组件,会被组件扫描并生成实例化对象。@Controller@Service@Repository都是特殊的组件注解。

@RestController

用于表示controller层的组件,是@Controller的衍生注解,包括了@Controller和@ResponseBody。相当于在controller层每个请求处理方法上都添加了@ResponseBody注解,这些方法都将返回JSON格式数据。


依赖注入注解

@Autowired

会根据对象的类型自动注入依赖对象,默认要求注入对象实例必须存在且只有一个实例,可以配置required=false来注入不一定存在的对象。

@Resource

默认会根据对象的名称自动注入依赖对象,如果想要根据类型进行注入,可以设置属性为type = 对象名.class

@Qualifier

当同一个对象有多个实例可以注入时,使用@Autowired注解无法进行注入,这时可以使用@Qualifier注解指定实例的名称进行精确注入。

@Primary

当同一个对象有多个实例时,优先选择该实例。


实例相关注解

@Bean

用于修饰方法,标识该方法会创建一个Bean实例,并交给Spring容器来管理。

@Scope

用于声明一个SpringBean实例的作用域,作用域的范围有以下几种:

  • singleton:单例模式,在Spring容器中该实例唯一。(单例,默认)
  • prototype:原型模式,每次使用实例都将重新创建。(非单例)
  • request:在同一请求中使用相同的实例,不同请求重新创建。
  • session:在同一会话中使用相同的实例,不同会话重新创建。
  • application:在同一应用内使用相同的实例,不同应用重新创建。

SpringMVC相关注解

@RequestMapping

可用于将Web请求路径映射到处理类的方法上,当作用于类上时,可以统一类中所有方法的路由路径,当作用于方法上时,可单独指定方法的路由路径。

method属性可以指定请求的方式,如GET、POST、PUT、DELETE等。

@GetMapping

用于表示GET请求方法,等价于@RequestMapping(method = RequestMethod.GET)

@PostMapping

用于表示POST请求方法,等价于@RequestMapping(method = RequestMethod.POST)

@PutMapping

用于表示PUT请求方法,等价于@RequestMapping(method = RequestMethod.PUT)

@DeleteMapping

用于表示DELETE请求方法,等价于@RequestMapping(method = RequestMethod.DELETE)

@RequestBody

表示方法的请求参数为JSON格式,从Body中传入,将自动绑定到方法参数对象中。

@ResponseBody

表示方法将返回JSON格式的数据,会自动将返回的对象转化为JSON数据。

@RequestParam

用于将方法的参数与Web请求的传递的参数进行绑定。

@PathVariable

用于接收请求路径中的参数。

@RequestPart

用于接收文件上传中的文件参数,通常是multipart/form-data形式传入的参数。


配置相关注解

@Configuration

用于声明一个Java形式的配置类,在该类中声明的Bean等配置将被SpringBoot的组件扫描功能扫描到。

@EnableAutoConfiguration

启用SpringBoot的自动化配置,会根据你在pom.xml添加的依赖和application.yml中的配置自动创建你需要的配置。

@ComponentScan

启用SpringBoot的组件扫描功能,将自动装配和注入指定包下的Bean实例。

@SpringBootApplication

用于表示SpringBoot应用中的启动类,相当于@SpringBootConfigurationn@EnableAutoConfiguration@ComponentScan三个注解的结合体。

@Value

用于注入在配置文件application.yml中配置好的属性

@ConfigurationProperties

用于批量注入外部配置,以对象的形式来导入指定前缀的配置

@Conditional

用于表示当某个条件满足时,该组件或Bean将被Spring容器创建,下面是几个常用的条件注解。

  • @ConditionalOnBean:当某个Bean存在时,配置生效。
  • @ConditionalOnMissingBean:当某个Bean不存在时,配置生效。
  • @ConditionalOnClass:当某个类在Classpath存在时,配置生效。
  • @ConditionalOnMissingClass:当某个类在Classpath不存在时,配置生效。

全局异常处理注解

@ControllerAdvice

常与@ExceptionHandler注解一起使用,用于捕获全局异常,能作用于所有controller中。

@ExceptionHandler

修饰方法时,表示该方法为处理全局异常的方法。


AOP相关注解

@Aspect

用于定义切面,切面是通知和切入点的结合,通过切面就能够描述当前aop程序需要针对于哪个原始方法,在什么时候执行什么样的操作。

@PointCut

定义切点表达式,是匹配连接点的条件,通知仅会在切入点方法执行时被应用。

@Before

表示前置通知(Before),该通知方法会在目标方法调用之前执行,通知描述了切面要完成的工作以及何时执行。

@After

表示后置通知(After),该通知方法会在在目标方法后被执行,无论是否有异常都会执行。

@AfterReturning

表示返回通知(AfterReturning),该通知方法会在在目标方法后被执行,有异常不会执行。

@AfterThrowing

表示异常通知(AfterThrowing),该通知方法会在目标方法发生异常后执行。

@Around

表示环绕通知(Around),该通知方法会将目标方法封装起来,在目标方法调用之前和之后执行自定义的行为。

@Order

用于定义组件的执行顺序,在AOP中指的是切面的执行顺序,value属性越低优先级越高。

测试相关注解

@SpringBootTest

用于指定测试类启用Spring Boot Test功能,默认会提供Mock环境。

@Test

指定方法为测试方法。

posted @   JavaOnHML  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示