文档章节

微服务开发的入门级框架Spring Boot详解(三)

二十岁以后
 二十岁以后
发布于 2017/08/09 13:17
字数 921
阅读 1045
收藏 51
点赞 6
评论 12

        通过前两章节的介绍,大家应该对Spring Boot有了些许的认识,也感觉到了这个框架带来的便利,下面我将讲解SpringBoot的一些常用注解。

1、Controller注解的使用

        1.1 简介

           

        1.2 RestController 注解详解

            RestController相当于@ResponseBody+@Controller,用来响应HTTP请求。在类之前加,不加就无法响应Http请求了。

          1.3 RequestMapping 注解详解

            RequestMapping用来配置URL映射,可以加在类上,也可加在方法上。

        如果把注解加在类上,访问此类下的方法,则需要在URL上加类上的映射。效果如下:注:joyou这个路径是之前在yml中配置的。

        

            如果一个方法,既想用hello访问,也想用hi访问,那么只需要把value属性配置为数组方式即可。在类上也一样。

        

                浏览器访问效果如下:使用hello和hi都可以访问此方法

            可以看到在日志输出结果如下

         1.4 RequestMapping 注解中Method属性详解           

                我们可以看到映射这里的属性有非常多的选择,规则如下:主要的作用是限制此方法的请求方式。  (PS:我记得有一次面试,HR问我SpringMVC 如何只允许Post方式访问一个方法?我当时也不知道直接在这设置就行了,我回答的是写一个拦截器,拦截掉所有非Post请求.......现在想想我当时想法好天真的,哈哈!)

            

               如果设为Get,那么只能接收Get请求,设置为Post,就只能接收Post请求。下面用Get做一个实验。

            首先将Method设为Get。       

@RequestMapping(value="/hello" , method = RequestMethod.GET)
public String HelloSpring(){
		
      return girl.toString();
}

            使用火狐浏览器的发包工具,向服务器发送一个GET请求,返回200状态码,说明请求成功!

            使用火狐浏览器的发包工具,向服务器发送一个POST请求,返回405状态码,说明失败了!

            上面通过设置其属性的方式,有朋友会觉得很麻烦,而Spring也早就为我们提供了一种更优雅的方式,将在下一章节介绍。

 

2、URL中参数的接收

        2.1 简介

        

        2.2 @PathVariable 注解详解

        使用@PathVariable 注解可以接收URL中的数据值,格式如下:

        

        浏览器带参数访问URL,可以看见输入的参数已经接收并返回给视图。

    

        2.3 @RequestParam注解详解

            使用RequestParam注解可以接收URL中参数的值,格式如下:(请大家注意与@PathVariable注解接收参数书写格式和代入参数的格式 )

        

        浏览器带参数访问URL,效果如下:

        

        需要注意的是,如果开启此注解访问URL不带参数则会报错!

        那么比如说我不想每次都带参数,有时候带有时候不带,这种情况怎么办呢?RequestParam中还有其他属性:required 是否为必传,defaultValue 默认值。请看下面的截图:

        浏览器不带参数访问结果如下,返回默认值0:

        2.4  使用组合注解

        上一章提到过一种优雅的限制请求类型的方法,就是使用@GetMapping @PostMapping@DeleteMapping等注解,例如@GetMapping 其相当于@RequestMapping( method = RequestMethod.GET),怎么样是不是更简略了?

            

 如果这篇博文帮助到您,请点赞收藏,您的鼓励和认可是我最大的动力!谢谢您!

© 著作权归作者所有

共有 人打赏支持
二十岁以后
粉丝 227
博文 25
码字总数 23016
作品 0
海淀
架构师
加载中

评论(12)

leixu2
leixu2
刚解除 spring boot ,因为学过 express /koa 框架以及 .net 的 nancy,所以基本能够看懂。
觉得这种写法不够简洁,不过可以有更多的配置性。
hugeo
hugeo
感谢总结
二十岁以后
二十岁以后

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的

引用来自“二十岁以后”的评论

您可以亲自试一试,Spring MVC都支持什么注解!以上很多注解和属性是没有的

引用来自“阿信sxq”的评论

你这么说了以后,我还真的又去仔细看了一遍,这篇文章里面说道的那些东西还真的全都是spring mvc的,要不然你列以下,看看我看漏了些啥

引用来自“二十岁以后”的评论

GetMapping等不是Spring MVC中的内容,您可以去pivotal官网去查,另外我这系列的博客只是把微服务开发中用到的东西串了起来,让大家更系统的学习。谢谢评论。

引用来自“阿信sxq”的评论

我并不是项质疑什么,相反,我认为你这系列博客写得还不错,挺适合初学者看的,但正是因为是初学者看,你在开头说这是“SpringBoot的一些常用注解”就会让他们产生需哦物的认识,以为这些注解只能在spring boot使用。
GetMapping在包org.springframework.web.bind.annotation。所在jar包spring-web,这是springframework框架的一部分,是属于springmvc的一部分。
/**
* Annotation for mapping HTTP {@code GET} requests onto specific handler
* methods.
*
* <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that
* acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}.
*
*
* @author Sam Brannen
* @since 4.3
* @see PostMapping
* @see PutMapping
* @see DeleteMapping
* @see PatchMapping
* @see RequestMapping
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {</p>
经过你这么一说,我又去pivotal看了一看,确实Spring4.3之后再web包下加入了@GetMapping等组合注解,之前看的3版本。感谢指出!
阿信sxq
阿信sxq

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的

引用来自“二十岁以后”的评论

您可以亲自试一试,Spring MVC都支持什么注解!以上很多注解和属性是没有的

引用来自“阿信sxq”的评论

你这么说了以后,我还真的又去仔细看了一遍,这篇文章里面说道的那些东西还真的全都是spring mvc的,要不然你列以下,看看我看漏了些啥

引用来自“二十岁以后”的评论

GetMapping等不是Spring MVC中的内容,您可以去pivotal官网去查,另外我这系列的博客只是把微服务开发中用到的东西串了起来,让大家更系统的学习。谢谢评论。
我并不是项质疑什么,相反,我认为你这系列博客写得还不错,挺适合初学者看的,但正是因为是初学者看,你在开头说这是“SpringBoot的一些常用注解”就会让他们产生需哦物的认识,以为这些注解只能在spring boot使用。
GetMapping在包org.springframework.web.bind.annotation。所在jar包spring-web,这是springframework框架的一部分,是属于springmvc的一部分。
/**
* Annotation for mapping HTTP {@code GET} requests onto specific handler
* methods.
*
* <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that
* acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}.
*
*
* @author Sam Brannen
* @since 4.3
* @see PostMapping
* @see PutMapping
* @see DeleteMapping
* @see PatchMapping
* @see RequestMapping
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.GET)
public @interface GetMapping {</p>
二十岁以后
二十岁以后

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的

引用来自“二十岁以后”的评论

您可以亲自试一试,Spring MVC都支持什么注解!以上很多注解和属性是没有的

引用来自“阿信sxq”的评论

你这么说了以后,我还真的又去仔细看了一遍,这篇文章里面说道的那些东西还真的全都是spring mvc的,要不然你列以下,看看我看漏了些啥
GetMapping等不是Spring MVC中的内容,您可以去pivotal官网去查,另外我这系列的博客只是把微服务开发中用到的东西串了起来,让大家更系统的学习。谢谢评论。
阿信sxq
阿信sxq

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的

引用来自“二十岁以后”的评论

您可以亲自试一试,Spring MVC都支持什么注解!以上很多注解和属性是没有的
你这么说了以后,我还真的又去仔细看了一遍,这篇文章里面说道的那些东西还真的全都是spring mvc的,要不然你列以下,看看我看漏了些啥
二十岁以后
二十岁以后

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的

引用来自“java9”的评论

应该改成spring mvc比较恰当一些吧
以上很多注解和属性是MVC没有的
二十岁以后
二十岁以后

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的
您可以亲自试一试,Spring MVC都支持什么注解!以上很多注解和属性是没有的
java9
java9

引用来自“阿信sxq”的评论

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的
应该改成spring mvc比较恰当一些吧
阿信sxq
阿信sxq
这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的
学习 Spring Boot 知识看这一篇就够了

从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区、我的博客和我的公号内。粗略的统计了一下总共的文章加起来大概有六十多篇了,其中一部分...

ityouknow ⋅ 05/28 ⋅ 0

用IDEA搭建springboot+thymleaf+mybatis(附分页方法)

参考thymleaf官方网址: 现在主流的微服务springboot配合H5开发效率极快。也符合现在前后端分离的开发方式。 thymleaf作为页面模板框架,可以更好的处理Controller和html的关系。 具体搭建过程...

HaleyLiu ⋅ 05/17 ⋅ 0

springcloud微服务理解

大家好这是我的一个简单理解,学习过程中有许多不明白的地方特此请教大家 我的项目大概情况: 生产者是一个springboot项目,有controller、service、entity、dao等完整的项目,添加注解后 @E...

樱木花道VS康 ⋅ 06/06 ⋅ 0

SpringBoot笔记(五)模板引擎thymeleaf和freemarker

SpringBoot本来不应该关注这块,但是既然都学了,就看看吧 SpringBoot属于前后端分离的微服务框架,默认的模板引擎是thymeleaf,虽然也能支持JSP,但是比较麻烦,另外freemarker也是SpringB...

世外大帝 ⋅ 04/25 ⋅ 0

微服务构建: Spring Boot

在展开 Spring Cloud 的微服务架构部署之前, 我们先了解一下用于构建微服务的基础框架-Spring Boot。 由于 Spring Cloud 的构建基于 Spring Boot 实现, 在后续的示例中我 们将大量使用 Sp...

wenhy ⋅ 06/20 ⋅ 0

Spring Cloud-honghu Cloud分布式微服务云系统

简介 鸿鹄云Cloud是基于SpringCloud来封装的,是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现、注册、配置中心、消息总线、负载均衡、断路器...

itcloud ⋅ 04/25 ⋅ 0

SpringBoot 入门实例

SpringBoot 是由 pivotal 提供的 Java 开发框架,伴随着 spring 4.0 版本一起发布,旨在简化 Spring 项目的初始化及开发过程,框架本身为开发过程提供了大量的默认配置,当然我们也可以通过简...

Aotian ⋅ 05/29 ⋅ 0

用IDEA搭建springboot+thymleaf+mybatis+pageHelper搭建框架

参考thymleaf官方网址: 现在主流的微服务springboot配合H5开发效率极快。也符合现在前后端分离的开发方式。 thymleaf作为页面模板框架,可以更好的处理Controller和html的关系。 具体搭建过程...

HaleyLiu ⋅ 05/16 ⋅ 0

【Spring Cloud Stream】异步任务

一、前言 前两篇博客提高了用线程池和消息队列才实现异步任务。本篇博客谈一谈用SpringCloud Stream来实现异步任务。 Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架。它...

qq_26545305 ⋅ 05/20 ⋅ 0

SpringBoot 2.0 系列001 -- 入门介绍以及相关概念

SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://projects.spring.io/spring-boot/ SpringBoot介绍 Spring Boot使开发独立的,产品级别的基于Spring的...

路上有你0314 ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部