• 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

      

      

  • 相关阅读:
    安卓源码版本清单(转载待查)
    【校招VIP 前端】电影详情模块的开发文档设计实战
    【校招VIP】“推推”项目课程Java:SpringBoot demo的说明、入门和下载
    【校招VIP java】产品原型功能点的理解
    【校招VIP】项目计划“推推”:小说一更新就通知(2022产品)
    PMP7.项目成本管理7.1规划成本管理
    软考信息安全操作系统安全保护
    PMP8.项目质量管理8.3控制质量
    PMP7.项目成本管理7.4控制成本
    PMP8.项目质量管理8.2管理质量
  • 原文地址:https://www.cnblogs.com/android-zcq/p/12186009.html
Copyright © 2020-2023  润新知