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

前言html

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

经常使用注解java

@SpringBootApplicationweb

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

  • @SpringBootConfiguration 继承至@Configuration,对于熟悉spring的开发者而言,此标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例归入到srping容器中,而且实例名就是方法名。redis

  • @EnableAutoConfiguration 这个注解就是springboot能自动进行配置的魔法所在了。主要是经过此注解,能全部符合自动配置条件的bean的定义加载到spring容器中,好比根据spring-boot-starter-web ,来判断你的项目是否须要添加了webmvc和tomcat,就会自动的帮你配置web项目中所须要的默认配置。具体的使用,会在后期自定义实现一个自动启动类时,会讲解到它的一些机制。此章节就不深刻了,只须要它是这个用途便可,通常上也单独使用不要这个注解,但好比须要排除一些无需自动配置的类时,可利用exclude进行排除。spring

  • @ComponentScan 这个熟悉spring的开发者也应该熟悉,会扫描当前包及其子包下被@Component,@Controller,@Service,@Repository等注解标记的类并归入到spring容器中进行管理。json

@Controller 和 @RestController后端

@RestController 是Spring4以后加入的注解,原来在@Controller中返回json须要@ResponseBody来配合,若是直接用@RestController替代@Controller就不须要再配置@ResponseBody,默认返回json格式。而@Controller是用来建立处理http请求的对象,通常结合@RequestMapping使用。tomcat

@RequestMapping

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

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

  • value, method;

  • value: 指定请求的实际地址,指定的地址能够是URI Template 模式(后面将会说明);

  • method: 指定请求的method类型, GET、POST、PUT、DELETE等;

  • consumes,produces;

  • consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

  • produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

  • params,headers;

  • params: 指定request中必须包含某些参数值是,才让该方法处理。

  • headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

经常使用的基本上就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

  • @RequestBody注解容许request的参数在reqeust体中,经常结合前端POST请求,进行先后端交互。

  • @ResponseBody注解支持将的参数在reqeust体中,一般返回json格式给前端。

@PathVariable、@RequestParam、@RequestAttribute

  • @PathVariable用来接收参数,如/path/001,可接收001做为参数

 

  • @RequestParam 用来接收URL中的参数,如/param?id=001,可接收001做为参数

 

  • @RequestAttribute用于访问由过滤器或拦截器建立的、预先存在的请求属性,效果等同与request.getAttrbute().

 

@Component、@Service、@Repository

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

  • @Component 最普通的组件,能够被注入到spring容器进行管理

  • @Repository 做用于持久层

  • @Service 做用于业务逻辑层

一般一些类没法肯定是使用@Service仍是@Component时,注解使用@Component,好比redis的配置类等

@ModelAttribute

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

  • 运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,而且会将这个对象自动加入ModelMap中,便于View层使用;

  • 运用在方法上,会在每个@RequestMapping标注的方法前执行,若是有返回值,则自动将该返回值加入到ModelMap中;

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

1

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

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

总结

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

若是你如今在JAVA这条路上挣扎,也想在IT行业拿高薪,能够参加咱们的训练营课程,选择最适合本身的课程学习,技术大牛亲授,7个月后,进入名企拿高薪。咱们的课程内容有:Java工程化、高性能及分布式、高性能、高架构、性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。若是你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优点的,想进阿里面试但担忧面试不过的,你均可以来,q群号为:835638062

 

注:加群要求

 

一、具备1-5工做经验的,面对目前流行的技术不知从何下手,须要突破技术瓶颈的能够加。

 

二、在公司待久了,过得很安逸,但跳槽时面试碰壁。须要在短期内进修、跳槽拿高薪的能够加。

 

三、若是没有工做经验,但基础很是扎实,对java工做机制,经常使用设计思想,经常使用java开发框架掌握熟练的,能够加。

 

四、以为本身很牛B,通常需求都能搞定。可是所学的知识点没有系统化,很难在技术领域继续突破的能够加。

 

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工做经验的梳理和总结,带着你们全面、科学地创建本身的技术体系和技术认知!

相关文章
相关标签/搜索