• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringBoot基础实践开源项目(一)

武飞扬头像
自动化代码美学
帮助2

跟着mall商城学习

mall商城是一个SpringBoot的开源项目,既有mall商城的完整功能实现项目mall,也有逐步指导的教程项目mall-learning

学新通

boot开源项目

boot是我跟着mall写的小项目,目的是绕开复杂的业务逻辑,只考虑最基础的技术实践,掌握SpringBoot框架的使用。计划会包含内容:SpringBoot MyBatis;Swagger;Redis;JWT认证;定时任务;ElasticSearch;Mongodb;RabbitMQ;OSS文件上传;AOP切面等。

第一波分享内容

项目搭建:

  • SpringBoot框架

    学新通

  • MySQL表

    学新通

  • MyBatis自动生成Mapper和Model

    学新通

用户增删改查:

  • 获取所有用户列表、添加用户、更新指定id用户信息、删除指定id的用户、验证授权、获取指定id的用户详情、修改密码、重置密码

    学新通

登录:

  • 登录以后返回token

    学新通

  • JWT认证

    学新通

附带JUnit5测试代码

项目附带了JUnit5测试代码:

学新通

在写测试代码过程中也体会到了良好约定带来的收益,比如:更新用户接口的测试代码,会通过@BeforeEach在测试前调用新增接口,准备好数据,拿到用户id,存入变量池vars中:

  1.  
    package com.example.boot.user;
  2.  
     
  3.  
    import com.alibaba.fastjson.JSONObject;
  4.  
    import org.apache.commons.lang3.RandomStringUtils;
  5.  
    import org.junit.jupiter.api.BeforeEach;
  6.  
    import org.junit.jupiter.api.Test;
  7.  
    import org.slf4j.Logger;
  8.  
    import org.slf4j.LoggerFactory;
  9.  
    import org.springframework.http.*;
  10.  
    import org.springframework.web.client.RestTemplate;
  11.  
     
  12.  
    import java.util.HashMap;
  13.  
    import java.util.Map;
  14.  
     
  15.  
    public class UpdateTest {
  16.  
    private static final Logger LOGGER = LoggerFactory.getLogger(UpdateTest.class);
  17.  
    Map<String, Object> vars = new HashMap<>();
  18.  
     
  19.  
    @BeforeEach
  20.  
    public void create() {
  21.  
    LOGGER.info("新增");
  22.  
    String username = RandomStringUtils.randomAlphabetic(6);
  23.  
    vars.put("username", username);
  24.  
    String url = "http://localhost:8070/api/users";
  25.  
    RestTemplate restTemplate = new RestTemplate();
  26.  
    HashMap<String, Object> body = new HashMap<>();
  27.  
    body.put("username", username);
  28.  
    body.put("password", "qa123456");
  29.  
    HttpHeaders headers = new HttpHeaders();
  30.  
    headers.setContentType(MediaType.APPLICATION_JSON);
  31.  
    HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(body, headers);
  32.  
    ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
  33.  
    System.out.println(responseEntity.getBody());
  34.  
     
  35.  
    LOGGER.info("获取id");
  36.  
    JSONObject bodyJson = JSONObject.parseObject(responseEntity.getBody());
  37.  
    Long id = bodyJson.getLong("id");
  38.  
    vars.put("id", id);
  39.  
    System.out.println(id);
  40.  
    }
  41.  
     
  42.  
    @Test
  43.  
    public void update() {
  44.  
    LOGGER.info("更新");
  45.  
    String url = String.format("http://localhost:8070/api/users/%d", vars.get("id"));
  46.  
    RestTemplate restTemplate = new RestTemplate();
  47.  
    HashMap<String, Object> body = new HashMap<>();
  48.  
    body.put("username", vars.get("username") "_new");
  49.  
    HttpHeaders headers = new HttpHeaders();
  50.  
    headers.setContentType(MediaType.APPLICATION_JSON);
  51.  
    HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(body, headers);
  52.  
    ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, String.class);
  53.  
    System.out.println(responseEntity.getBody());
  54.  
    JSONObject bodyJson = JSONObject.parseObject(responseEntity.getBody());
  55.  
    Long id = bodyJson.getLong("id");
  56.  
    assert id != null;
  57.  
    }
  58.  
    }
学新通

然后在@Test测试方法中,从变量池vars中提取出id,传入url中调用更新接口。

项目源码:https://github.com/dongfanger/boot

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbiefb
系列文章
更多 icon
同类精品
更多 icon
继续加载