本文整理了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
用于声明一个Spring
Bean
实例的作用域,作用域的范围有以下几种:
- 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
标签:常用,SpringBoot,实例,用于,组件,注解,方法 From: https://www.cnblogs.com/hmlon/p/17319996.html指定方法为测试方法。