β

SpringBoot | 第六章:常用注解介绍及简单使用

ImportNew 10 阅读
原文出处: oKong

前言

之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志配置等。这章节开始,开始总结一些关于 springboot 的综合开发的知识点。由于 SpringBoot 本身是基于 Spring SpringMvc 等各类 spring 家族的一个解决方案,可快速进行集合。故相关知识点其实大部分都是基于 spring 或者 springmvc 既有的知识点的。本章节,主要讲解的是关于 web开发 springboot 独有的一些常用注解进行说明。

常用注解

@SpringBootApplication

前几章,在系统启动类里面,都加入了此启动注解,此注解是个组合注解,包括了 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan 注解。

@Controller 和 @RestController

@RestController 是Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。而@Controller是用来创建处理http请求的对象,一般结合 @RequestMapping 使用。

@RequestMapping

一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

常用属性(摘抄至网络):

常用的基本上就 value method 了。 其简化注解有

@GetMapping 等同于 @RequestMapping(method = RequestMethod.GET)
@PostMapping 等同于 @RequestMapping(method = RequestMethod.POST)
@PutMapping 等同于 @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping 等同于 @RequestMapping(method = RequestMethod.DELETE)
@PatchMapping 等同于 @RequestMapping(method = RequestMethod.PATCH)

@RequestBody和@ResponseBody

@PathVariable、@RequestParam、@RequestAttribute

@Component、@Service、@Repository

这三者都是申明一个单例的bean类并纳入spring容器中,后两者其实都是继承于 @Component

通常一些类无法确定是使用@Service还是@Component时,注解使用 @Component ,比如 redis 的配置类等

@ModelAttribute

主要是绑定请求参数到指定对象上。此注解可被用于方法、参数上。

由于现在都采用 前后端分离 开发,故此注解相对用的较少了,但对于一些在每次请求前需要进行一些额外操作时。使用此注解依然是个选择,比如进行统一的业务校验等,但使用此注解实现类似功能时需要注意,使用异步调用时,比如 callable 或者 DeferredResult 时,被此注解的方法会执行 两次 ,因为异步请求时,是挂起另一个线程去重新执行,对于配置了拦截器而已,它们的执行顺序为

preHandle ---->afterConcurrentHandlingStarted ----> Controller---->preHandler----> postHandler ----> afterCompletion

拦截器的相关知识点会在下章进行说明,这里只是特殊说明下。解决方案的话可简单根据DispatcherType类型进行判断,异步时对应类型为:ASYNC,第一次请求正常为:REQUEST。

总结

本章节主要是阐述了在 web 开发时一些常用的注解,但比如一些像 @autowired @resource @Qualifier 等在此就不列举了,这些都比较简单。对于开发者而言这些基本上都了解。

最后

目前互联网上很多大佬都有 springboot 系列教程,如有雷同,请多多包涵了。本文是作者在电脑前一字一句敲的,每一步都是实践的。若文中有所错误之处,还望提出,谢谢。

作者:ImportNew
原文地址:SpringBoot | 第六章:常用注解介绍及简单使用, 感谢原作者分享。

发表评论