文档章节

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

二十岁以后
 二十岁以后
发布于 2017/08/09 13:17
字数 921
阅读 1061
收藏 50

        通过前两章节的介绍,大家应该对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),怎么样是不是更简略了?

            

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

© 著作权归作者所有

共有 人打赏支持
二十岁以后
粉丝 230
博文 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
0
微服务资源springboot、springcloud、docker、dubbo项目实战等倾心分享

精彩内容 java实战练习项目教程 全网最全电子图书分享 你所需要的大数据视频教程 java学习视频教程及源码 今天又是周末,还是想给大家送一些福利,因为最近一直有小伙伴问我要springboot等微...

公众号_好好学java
08/06
0
0
Spring Boot与Spring Cloud是什么关系?

SpringBoot先于Spring Cloud问世。 SpringBoot相当于脚手架,借助他可以快速搭建房子,它本身不具备任何功能属性,值是普通房间,没有其他任何功能。 什么是Spring Boot Spring Boot简化了基...

远方的梦Java
08/05
0
0
10分钟入门SpringBoot

SpringBoot是基于spring框架衍生的一种新的微服务框架,如果对Spring有一定了解的同学肯定知道在Spring中需要配置各种xml文件完成bean的注册操作,随着服务越来越多,配置就变得越来越复杂,...

jwfy
06/14
0
0
用IDEA搭建springboot+thymleaf+mybatis(附分页方法)

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

HaleyLiu
05/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
31分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部