springboot微服务的简单小结

近来公司用springboot微服务,所以小结一下。

基础:

什么是SpingBoot微服务?

如何创建SpringBoot微服务?

如何管理和完善SpringBoot微服务?

实例:

建立一个由Api层、服务层、数据层构成的微服务

Api层基本知识介绍

注解清单:

@RestController

@RequestMapping 为控制器指定可以处理那些URL 请求,可以定义在 类 和 方法 上

匹配符

– ?:匹配文件名中的一个字符

– *:匹配文件名中的任意字符

– **:** 匹配多层路径

实例:

URL : /user/*/create

-- /user/bigsea/create 、 /user/sea/create 等URL

URL : /user/**/create

-- /user/big/sea/create 、 /user/sea/big/create 等URL

URL : /user/create??

-- /user/createaa 、/user/createbb

  1. @Target({ElementType.METHOD, ElementType.TYPE})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Mapping
  5. public @interface RequestMapping {
  6. String[] value() default {};
  7. RequestMethod[] method() default {};
  8. String[] params() default {};
  9. String[] headers() default {};
  10. String[] consumes() default {};
  11. String[] produces() default {};
  12. }
  13. value:  指定请求的实际地址, 比如 /action/info之类。
    method:  指定请求的method类型, GET、POST、PUT、DELETE等
    consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
    produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
    params: 指定request中必须包含某些参数值是,才让该方法处理
    headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求
  14. 其中,consumes, produces使用content-typ信息进行过滤信息;headers中可以使用content-type进行过滤和判断。

@PathVariable 注解

带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。

@RequestParam 绑定请求参数

在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法

– value:参数名

– required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常

  1. /**
  2. * 如果 required = true 则表示请求参数对应的 字段 必须存在.如果不存在则会抛出异常<br/>
  3. * @param firstName 可以为null
  4. * @param lastName 不能为null .为null报异常
  5. * @param age age字段表示如果没有 age 参数 则默认值为 0
  6. * @return
  7. */
  8. @RequestMapping("/requestParam")
  9. public String requestParam(@RequestParam(value="firstName",required=false)String firstName,
  10. @RequestParam( value="lastName" ,required = true) String lastName,
  11. @RequestParam(value="age",required = false ,defaultValue="0")int age) {
  12. System.out.println("hello my name is " + (firstName == null ? "" : firstName)
  13. + lastName + "," + age +" years old this year");
  14. return "helloworld";
  15. }

@RequestHeader 获取请求头

请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将求头中的属性值绑定到处理方法的入参中

  1. /**
  2. * 获取请求头中的信息
  3. * @RequestHeader 也有 value ,required ,defaultValue 三个参数
  4. * @param userAgent
  5. * @param cookie
  6. * @return
  7. */
  8. @RequestMapping("/requestHeader")
  9. public String requestHeader(@RequestHeader("User-Agent")String userAgent,@RequestHeader("Cookie")String cookie){
  10. System.out.println("userAgent:["+userAgent+"]");
  11. System.out.println("cookie:["+cookie+"]");
  12. return "helloworld";
  13. }

最新文章

  1. 易用BPM时代,企业如何轻松驾驭H3?
  2. iOS 私有变量 私有方法
  3. 解决Android调用https服务API时出错的问题
  4. 表视图控制器(TableViewController)(二)
  5. HDU 5313 Bipartite Graph (二分图着色,dp)
  6. extern用法总结!
  7. [数据结构]Treap简介
  8. SecureCRT连接虚拟机中的Linux系统(Ubuntu)_Linux教程
  9. 深入理解JVM垃圾收集机制(JDK1.8)
  10. MySQL 5.6的一个bug引发的故障
  11. django 多对多 增 删 改 查
  12. 项目报错 exception &#39;MongoConnectionException&#39; with message &#39;Failed to connect to: 127.0.0.1:27017: Authentication failed on database &#39;www&#39; with username &#39;www&#39;: auth failed&#39; in
  13. 浅谈 JSON 那些被转义的字符们
  14. PHP一句话木马研究
  15. sharepoint 2010 记录管理 对象模型
  16. 搭建linux远程服务器和传输下载文件
  17. 2015ACM-ICPC长春E题(hdu5531)题解
  18. MySQL命令行工具各功能说明(转)
  19. CListCtrl获取列数
  20. SQL Server 更新 触发器

热门文章

  1. bash 语言的乘法表
  2. 分享6个网址二维码API接口
  3. Oracle 数据库导出时 EXP-00008;ORA-00904
  4. 201621123034 《Java程序设计》第9周学习总结
  5. Angular &amp; RxJS &amp; Typesc&#173;ript
  6. [ARC068F] Solitaire [DP]
  7. 2017 多校4 Security Check
  8. 雅礼集训 Day7 T1 Equation 解题报告
  9. [解决方案]NuGet打包报错: &#39;X&#39; already has a dependency defined for &#39;Y&#39;
  10. js加解密的算法