首页 yabo88狗亚app 服务器 大yabo88狗亚app--任意三数字加yabo.com直达官网 存储 IT 安全 物联网 软件 商品

存储

存储频道旗下栏目:

Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

来源:今日头条 ??发布时间:2019-08-21
摘要:背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型yabo88狗亚app--任意三数字加yabo.com直达官网库,在web开发中,我们常用它来缓存yabo88狗亚app--任意三数字加yabo.com直达官网库的查询结果。 本篇博客将介

?背景

Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型yabo88狗亚app--任意三数字加yabo.com直达官网库,在web开发中,我们常用它来缓存yabo88狗亚app--任意三数字加yabo.com直达官网库的查询结果。

yabo88狗亚app本篇博客将介绍如何使用Spring-Boot快速搭建一个Web应用,并且采用Mybatis作为我们的ORM框架。为了提升性能,我们将Redis作为Mybatis的二级缓存。为了测试我们的代码,我们编写了单元测试,并且用H2内存yabo88狗亚app--任意三数字加yabo.com直达官网库来生成我们的测试yabo88狗亚app--任意三数字加yabo.com直达官网。通过该项目,我们希望读者可以快速掌握现代化Java Web开发的技巧以及最佳实践。

环境

  • 开发环境:mac 10.11
  • ide:Intellij 2017.1
  • jdk:1.8
  • Spring-Boot:1.5.3.RELEASE
  • Redis:3.2.9
  • Mysql:5.7

Spring-Boot


新建项目

首先,我们需要初始化我们的Spring-Boot工程。通过Intellij的Spring Initializer,新建一个Spring-Boot工程变得十分简单。首先我们在Intellij中选择New一个Project,然后在选择依赖的界面,勾选Web、Mybatis、Redis、Mysql、H2。

Spring Initializer已经帮我们自动生成了一个启动类——SpringBootMybatisWithRedisApplication。该类的代码十分简单:

  1. @SpringBootApplication?
  2. public?class?SpringBootMybatisWithRedisApplication?{?
  3. ????public?static?void?main(String[]?args)?{?
  4. ????????SpringApplication.run(SpringBootMybatisWithRedisApplication.class,?args);?
  5. ????}?
  6. }?

@SpringBootApplication注解表示启用Spring Boot的自动配置特性。好了,至此我们的项目骨架已经搭建成功,感兴趣的读者可以通过Intellij启动看看效果。

新建API接口

接下来,我们要编写Web API。假设我们的Web工程负责处理商家的产品(Product)。我们需要提供根据product id返回product信息的get接口和更新product信息的put接口。首先我们定义Product类,该类包括产品id,产品名称name以及价格price:

  1. public?class?Product?implements?Serializable?{?
  2. ?private?static?final?long?serialVersionUID?=?1435515995276255188L;?
  3. ?private?long?id;?
  4. ?private?String?name;?
  5. ?private?long?price;?
  6. ?//?getters?setters?
  7. }?

然后我们需要定义Controller类。由于Spring Boot内部使用Spring MVC作为它的Web组件,所以我们可以通过注解的方式快速开发我们的接口类:

  1. @RestController?
  2. @RequestMapping("/product")?
  3. public?class?ProductController?{?
  4. ?@GetMapping("/{id}")?
  5. ?public?Product?getProductInfo(?
  6. ?@PathVariable("id")?
  7. ?Long?productId)?{?
  8. ?//?TODO?
  9. ?return?null;?
  10. ?}?
  11. ?@PutMapping("/{id}")?
  12. ?public?Product?updateProductInfo(?
  13. ?@PathVariable("id")?
  14. ?Long?productId,?
  15. ?@RequestBody?
  16. ?Product?newProduct)?{?
  17. ?//?TODO?
  18. ?return?null;?
  19. ?}?
  20. }?

我们简单介绍一下上述代码中所用到的注解的作用:

  • @RestController:表示该类为Controller,并且提供Rest接口,即所有接口的值以Json格式返回。该注解其实是@Controller和@ResponseBody的组合注解,便于我们开发Rest API。
  • @RequestMapping、@GetMapping、@PutMapping:表示接口的URL地址。标注在类上的@RequestMapping注解表示该类下的所有接口的URL都以/product开头。@GetMapping表示这是一个Get HTTP接口,@PutMapping表示这是一个Put HTTP接口。
  • @PathVariable、@RequestBody:表示参数的映射关系。假设有个Get请求访问的是/product/123,那么该请求会由getProductInfo方法处理,其中URL里的123会被映射到productId中。同理,如果是Put请求的话,请求的body会被映射到newProduct对象中。

这里我们只定义了接口,实际的处理逻辑还未完成,因为product的信息都存在yabo88狗亚app--任意三数字加yabo.com直达官网库中。接下来我们将在项目中集成mybatis,并且与yabo88狗亚app--任意三数字加yabo.com直达官网库做交互。

集成Mybatis

配置yabo88狗亚app--任意三数字加yabo.com直达官网源