微服务开发的入门级框架Spring Boot详解(三)
微服务开发的入门级框架Spring Boot详解(三)
二十岁以后 发表于4个月前
微服务开发的入门级框架Spring Boot详解(三)
  • 发表于 4个月前
  • 阅读 945
  • 收藏 47
  • 点赞 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),怎么样是不是更简略了?

            

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

共有 人打赏支持
粉丝 195
博文 14
码字总数 14335
评论 (12)
hydrogen
:+1:写的很不错,期待后面的文章
二十岁以后

引用来自“hydrogen”的评论

:+1:写的很不错,期待后面的文章

感谢支持,接下来我会写集成mybites的注解开发和spring cloud
阿信sxq
这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的
java9

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

这篇文章的内容应该是spring mvc的,脱离了spring boot也是一样的
应该改成spring mvc比较恰当一些吧
二十岁以后

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

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

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

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

引用来自“java9”的评论

应该改成spring mvc比较恰当一些吧
以上很多注解和属性是MVC没有的
阿信sxq

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

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

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

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

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

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

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

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

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

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

我并不是项质疑什么,相反,我认为你这系列博客写得还不错,挺适合初学者看的,但正是因为是初学者看,你在开头说这是“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版本。感谢指出!
hugeo
感谢总结
leixu2
刚解除 spring boot ,因为学过 express /koa 框架以及 .net 的 nancy,所以基本能够看懂。
觉得这种写法不够简洁,不过可以有更多的配置性。
×
二十岁以后
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!支付宝:18513450535 ,*益源
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: