文档章节

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

二十岁以后
 二十岁以后
发布于 2017/08/09 13:17
字数 921
阅读 1084
收藏 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),怎么样是不是更简略了?

            

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

© 著作权归作者所有

共有 人打赏支持
二十岁以后
粉丝 231
博文 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的关系

如下文章字数大约600字,阅读时间需要5分钟左右。 随着微服务架构的持续火热,以及对开发部署迭代需求越来越快速,现今,spring boot逐渐火热,越来越流行。 随着spring boot 流行的还有另外...

Java大蜗牛
08/27
0
0
Spring Boot与Spring Cloud是什么关系?

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

远方的梦Java
08/05
0
0
2018年互联网架构主流微服务架构之潮流的主先锋Spring Boot 2.0

一、Spring Boot 介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定...

A尚学堂Len老师
08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

spring只

一、IOC(Inversion of Control)或者依赖注入(Dependency Injection) 1、底层实现原理:反射 2、三大核心接口: BeanFactory:简单容器系列,只是实现了容器最基本的功能。 ApplicationC...

狠一点
1分钟前
0
0
缓存架构SpringBoot集成Curator实现zookeeper分布式锁

一、分布式锁简介 1、什么是锁 在单机环境下,当存在多个线程可以同时改变某个共享变量时,就需要同步来实现该功能,使其线程安全。 而同步就是通过锁来实现的。锁保证了同一时刻只有一个线程...

架构师springboot
3分钟前
0
0
11《Java核心技术》之Java提供了哪些IO方式? NIO如何实现多路复用?

一、提出问题 IO 一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO 扩展能力愈发重要。幸运的是,Java 平台 IO 机制经过不断完善,虽然在某些方面仍有不足,但已经...

飞鱼说编程
10分钟前
0
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

linuxprobe16
10分钟前
0
0
55:Mysql用户管理|常用sql语句|mysql数据库备份恢复

1、Mysql用户管理; 场景,为了安全,新建的站点,创建新的用户,或者给已有用户授权,对某个库或者某个表有权限; 语法: grant all on *.* to 'user'@'127.0.0.1' identified by 'password'; g...

芬野de博客
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部