以前几个章节,大部分都是算介绍springboot的一些外围配置,好比日志 配置等。这章节开始,开始总结一些关于
springboot
的综合开发的知识点。因为SpringBoot
自己是基于Spring
和SpringMvc
等各种spring
家族的一个解决方案,可快速进行集合。故相关知识点其实大部分都是基于spring
或者springmvc
既有的知识点的。本章节,主要讲解的是关于web开发
及springboot
独有的一些经常使用注解进行说明。html
前几章,在系统启动类里面,都加入了此启动注解,此注解是个组合注解,包括了
@SpringBootConfiguration
、@EnableAutoConfiguration
和@ComponentScan
注解。前端
@SpringBootConfiguration 继承至@Configuration
,对于熟悉spring
的开发者而言,此标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例归入到srping容器中,而且实例名就是方法名。web
@EnableAutoConfiguration 这个注解就是springboot
能自动进行配置的魔法所在了。主要是经过此注解,能全部符合自动配置条件的bean的定义加载到spring
容器中,好比根据spring-boot-starter-web
,来判断你的项目是否须要添加了webmvc
和tomcat
,就会自动的帮你配置web项目中所须要的默认配置。具体的使用,会在后期自定义实现一个自动启动类时,会讲解到它的一些机制。此章节就不深刻了,只须要它是这个用途便可,通常上也单独使用不要这个注解,但好比须要排除一些无需自动配置的类时,可利用exclude
进行排除。redis
@ComponentScan 这个熟悉spring
的开发者也应该熟悉,会扫描当前包及其子包下被@Component,@Controller,@Service,@Repository等注解标记的类并归入到spring容器中进行管理。spring
@RestController 是Spring4以后加入的注解,原来在@Controller中返回json须要@ResponseBody来配合,若是直接用@RestController替代@Controller就不须要再配置@ResponseBody,默认返回json格式。而@Controller是用来建立处理http请求的对象,通常结合
@RequestMapping
使用。json
一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的全部响应请求的方法都是以该地址做为父路径。后端
经常使用属性(摘抄至网络):tomcat
经常使用的基本上就value
和method
了。 其简化注解有springboot
@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注解容许request的参数在reqeust体中,经常结合前端POST请求,进行先后端交互。
@ResponseBody注解支持将的参数在reqeust体中,一般返回json格式给前端。
这三者都是申明一个单例的bean类并归入spring容器中,后二者其实都是继承于
@Component
。
@Component 最普通的组件,能够被注入到spring容器进行管理
@Repository 做用于持久层
@Service 做用于业务逻辑层
一般一些类没法肯定是使用@Service仍是@Component时,注解使用@Component
,好比redis
的配置类等
主要是绑定请求参数到指定对象上。此注解可被用于方法、参数上。
因为如今都采用先后端分离
开发,故此注解相对用的较少了,但对于一些在每次请求前须要进行一些额外操做时。使用此注解依然是个选择,好比进行统一的业务校验等,但使用此注解实现相似功能时须要注意,使用异步调用时,好比callable
或者DeferredResult
时,被此注解的方法会执行两次
,由于异步请求时,是挂起另外一个线程去从新执行,对于配置了拦截器而已,它们的执行顺序为
preHandle ---->afterConcurrentHandlingStarted ----> Controller---->preHandler----> postHandler ----> afterCompletion
拦截器的相关知识点会在下章进行说明,这里只是特殊说明下。解决方案的话可简单根据DispatcherType类型进行判断,异步时对应类型为:ASYNC,第一次请求正常为:REQUEST。
本章节主要是阐述了在
web
开发时一些经常使用的注解,但好比一些像@autowired
、@resource
、@Qualifier
等在此就不列举了,这些都比较简单。对于开发者而言这些基本上都了解。
目前互联网上不少大佬都有
springboot
系列教程,若有雷同,请多多包涵了。本文是做者在电脑前一字一句敲的,每一步都是实践的。若文中有所错误之处,还望提出,谢谢。
499452441
lqdevOps
本文地址:https://blog.lqdev.cn/2018/07/16/springboot/chapter-six/