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

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM