springboot微服务项目系统秒杀模块——01环境搭建和测试及登陆的实现

1. 功能描述和所用技术点

  功能: 登陆注册 、课程列表、课程详情(包含倒计时和秒杀功能)、我的订单功能、高并发优化(采用kafka)

  技术:前后端分离开发springboot +vue.js

  本项目用到的数据库是基于linux的数据库。 可以自行设置连接为window本地数据库。若需了解linux端的相关配置,请参考linux教程系列:

  连接: https://www.cnblogs.com/android-zcq/p/12187725.html

1.1 登陆后台功能:

  1. springboot的数据操作、事务管理、控制器以及模板引擎

  2. 登陆功能的安全策略,验证码和MD5加盐操作

  3. 使用redis优化登陆

  4. 实现分布式session登陆方案,为前后端分离做准备

1.2 前端开发

  1.界面构成、跳转关系、组件划分、文件结构

  2.使用vue-router路由控制、element-UI组件库、axios异步加载

  3.前后端对接: 打包和部署

  4.保持前后端分离的跨域登录状态解决方案

2.工程搭建

  

  使用idea创建spring boot工程(工程创建方式可以通过https://start.spring.io创建或者使用idea工具创建) ,pom.xml内容如下


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zcq</groupId>
<artifactId>seckill1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>seckill1</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<!--运维监控接口,监控项目健康情况-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--springboot-jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--mysql-->
<!-- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>

<!--JSR-303参数验证(比如业务层 ,接口层..参数校验)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

<!-- 添加 jetty 服务启动,可以代替tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<!--消息机制-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<!--springboot测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>

<!--避免不识别@RunWith-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>

<!--springboot-maven插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

 配置application.properties

#此处数据库是连接的linux的mysql
spring.datasource.url =jdbc:mysql://192.168.43.3:3306/msha?useUnicode=true&serverTimezone=GMT%2B8&useSSL=false spring.datasource.username = root spring.datasource.password = 123456 spring.datasource.driverClassName = com.mysql.jdbc.Driver #spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.initial-size= 1 spring.datasource.min-idle= 3 spring.datasource.max-idle= 20 spring.datasource.max-active= 20 spring.datasource.time-between-eviction-runs-millis: 60000 spring.datasource.min-evictable-idle-time-millis: 30000 spring.datasource.validation-query: select 1 spring.datasource.test-while-idle: true spring.datasource.test-on-borrow: false spring.datasource.test-on-return: false ######################################################## ###jpa ######################################################## spring.jpa.database= MYSQL spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto= update spring.jpa.open-in-view= true spring.jpa.properties.hibernate.enable_lazy_load_no_trans= true

3.测试环境

  1.编写User类映射tb_user表

  

@Entity
@Table(name="tb_user")
public class User implements Serializable {
    @Id
    private String username;
    private String password;
    private int id;
    public User() {
    }
    public User(String xxx, String s) {
        username = xxx;
        password = s;
    }
    。。。get/set方法省略   
}

  2.编写repository类

  

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, String> {
}

  3.编写测试Controller类

@RestController
public class TestController {

    @Autowired
    private UserRepository userRepository;

    @GetMapping("/test1")
    public String test(){
        return "登陆测试";
    }
}

  此时可以启动boot工程,访问http://localhost:8080/test1 如果能得到 “登陆测试” 代表整个工程配置成功

  4.编写单元测试类,测试数据是否可以添加到 linux 中的mysql中

    如果@RunWith不能识别,可以在pom.xml中 引入 Junit4.12版本 。上面pom.xml中已经引入

@RunWith(SpringRunner.class)
@SpringBootTest
class Seckill1ApplicationTests {
    @Autowired
    private UserRepository userRepository;
    @Test
    public void testInsertUser(){
        User user = new User();
        user.setUsername("张三");
        user.setPassword("123");
        User user1 = userRepository.save(user);
        System.out.println("保存的用户是:"+user1);
    }
}

4.关于登陆和注册实现在后续篇章。总结以上过程出现的问题

  问题1: 在 实体类 User中 使用@Table(name="tb_user") 报错 , “Cannot resolve table” 

  解决办法: 打开idea的工具栏--->view --->Tool Window --->DataSource  若这里没有任何数据源配置, 需配置mysql数据源 ,因为当前项目是mysql数据库

  

   填写内容如下:

  

   接着需要打开idea工具栏 -->view -->Tool Windows --> persistence 如下图, 在idea左下角位置,选中自己工程右键点击:Assign Data Sources...

  

  最后一步

  

  问题2: 在工程的 测试包中的测试类中不识别 @RunWith(SpringRunner.class)

  解决办法: 在pom.xml引入Junit测试包4.12即可

  

<!--避免不识别@RunWith-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

   问题3:报错  Failed to determine suitable jdbc url

  解决办法:检查application.properties文件代码格式。 我这里是将url换行了,所以不识别,注意要写在一行不要换行写

  serverTimezone=GMT%2B8   解释: UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。所以需写成serverTimezone=GMT%2B8

  useSSL=false                         解释: 为了解决mysql版本高低兼容提示问题

spring.datasource.url =jdbc:mysql://192.168.43.3:3306/msha?useUnicode=true&serverTimezone=GMT%2B8&useSSL=false

  

  

原文地址:https://www.cnblogs.com/android-zcq/p/12186009.html