← Back to list

Spring Boot Project Database Configuration Guide for Local and Cloud Environments

1. Prerequisites

Chan Meng · 2025-02-22 04:36 · 0 claps · 3.5 min read
#spring-boot #java #database #database-configuration #springboot-database
Open on Medium ↗

Spring Boot Project Database Configuration Guide for Local and Cloud Environments

1. Prerequisites

1.1 Required Software Downloads

1.2 Project Structure Overview

This project is a TikTok e-commerce application using Spring Boot, with the following key configuration files:

  • application-dev.yml: Development environment configuration
  • RedisClientConfig.java: Redis configuration class
  • RedisClientConfigProperties.java: Redis properties configuration class
  • Constants.java: Constants definition class

2. MySQL Configuration

2.1 MySQL Installation

  1. Run MySQL installer
  2. Select “Developer Default” installation type
  3. Configure root password
  4. Complete installation

2.2 Create Project Database

  1. Open Command Prompt (with admin privileges):
mysql -u root -p
# Enter your set password
  1. Create database:
CREATE DATABASE IF NOT EXISTS douyin_mall DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE douyin_mall;

2.3 Local MySQL Connection Configuration

In application-dev.yml:

spring:
  datasource:
    username: root
    password: {your_mysql_password}  # Replace with your password
    url: jdbc:mysql://127.0.0.1:3306/douyin_mall?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource

  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
    show-sql: true
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
        format_sql: true

  hikari:
    pool-name: Retail_HikariCP
    minimum-idle: 15 
    maximum-pool-size: 25
    idle-timeout: 180000 # Max idle connection time, default 600000 (10 minutes)
    max-lifetime: 1800000 # Max connection lifetime, default 1800000 (30 minutes)
    connection-timeout: 60000 # Connection timeout, default 30 seconds
    auto-commit: true  
    connection-test-query: SELECT 1

3. Redis Configuration

3.1 Redis Installation

  1. Run Redis-x64-xxx.msi
  2. Check “Add the Redis installation folder to the PATH environment variable”
  3. Verify installation after completion:
# Open new command prompt
redis-cli
127.0.0.1:6379> ping
# PONG indicates successful installation

3.2 Redis Connection Configuration

Add to application-dev.yml:

redis:
  sdk:
    config:
      host: 127.0.0.1
      port: 6379
      pool-size: 10
      min-idle-size: 5
      idle-timeout: 30000
      connect-timeout: 5000
      retry-attempts: 3
      retry-interval: 1000
      ping-interval: 60000
      keep-alive: true

3.3 Implement Redis Test Interface

  1. Create Redis Test Controller (src/main/java/com/qxy/controller/RedisTestController.java):
package com.qxy.controller;

import com.qxy.common.response.Response;
import com.qxy.common.response.ResponseCode;
import com.qxy.infrastructure.redis.IRedisService;
import org.redisson.api.RMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@RequestMapping("/api/redis")
public class RedisTestController {

    @Resource
    private IRedisService redisService;

    @GetMapping("/test")
    public Response<String> testRedis() {
        try {
            // Test basic operations
            redisService.setValue("test_key", "Redis connection test");
            String value = redisService.getValue("test_key");

            // Test numeric operations
            redisService.setAtomicLong("test_count", 0);
            long count = redisService.incr("test_count");

            // Test Map structure
            RMap<String, String> map = redisService.getMap("test_map");
            map.fastPut("key1", "value1");

            return Response.<String>builder()
                .code(ResponseCode.SUCCESS.getCode())
                .info(ResponseCode.SUCCESS.getInfo())
                .data("Redis test successful! value=" + value + ", count=" + count)
                .build();

        } catch (Exception e) {
            return Response.<String>builder()
                .code(ResponseCode.UN_ERROR.getCode())
                .info("Redis connection test failed: " + e.getMessage())
                .build();
        }
    }
}
  1. Add Redis key constants in Constants class:
public class Constants {
    // Other constant definitions...

    public static class RedisKey {
        public static final String TEST_PREFIX = "test:";
        public static final String USER_PREFIX = "user:";
        public static final String PRODUCT_PREFIX = "product:";
        public static final String ORDER_PREFIX = "order:";

        public static String getKey(String prefix, String key) {
            return prefix + key;
        }
    }
}

4. Cloud Server Database Configuration

4.1 Connection Information

Cloud server database connection details:

  • Server IP: [REDACTED_IP_ADDRESS]
  • Database Port: [REDACTED_PORT]
  • Username: [REDACTED_USERNAME]
  • Password: [REDACTED_PASSWORD]

4.2 Update Configuration File

Modify datasource configuration in application-dev.yml:

spring:
  datasource:
    username: [REDACTED_USERNAME]    # Cloud database username
    password: [REDACTED_PASSWORD]  # Cloud database password
    url: jdbc:mysql://[REDACTED_IP_ADDRESS]:[REDACTED_PORT]/douyin_mall?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true

5. Entity Class Configuration

5.1 Modify AiOrder Entity Class

Update src/main/java/com/qxy/model/po/AiOrder.java:

package com.qxy.model.po;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "ai_order")  // Avoid MySQL keywords
public class AiOrder {
    @Id
    private String orderId;
    private String status;

    // Getters and Setters
    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

6. Verification and Testing

6.1 Project Startup

  1. Ensure services are running:
# Check MySQL service
net start mysql

# Check Redis service
redis-cli ping
  1. Run Application.java

  2. Observe startup logs for any error messages

6.2 Interface Testing

  1. Redis Test:
{
    "code": "0000",
    "info": "Call Successful",
    "data": "Redis test successful! value=Redis connection test, count=1"
}
  1. MySQL Connection Test:
mysql -h 116.62.149.227 -P 13306 -u root -p123456
use douyin_mall;
show tables;
# Check if ai_order table exists

7. Troubleshooting Common Issues

7.1 MySQL Connection Problems

  1. Access Denied Error:
  • Verify username and password
  • Confirm user database permissions
  1. Communications Link Failure:
  • Check network connection
  • Ensure MySQL service is running
  • Verify firewall settings

7.2 Redis Connection Issues

  1. Connection Timeout:
  • Confirm Redis service status
  • Check redis.conf configuration
  • Verify port availability
  1. Data Operation Failures:
  • Test basic operations with redis-cli
  • Check memory usage
  • Review Redis logs

7.3 Entity Mapping Problems

If encountering table name errors:

# Login to MySQL and delete incorrect table
mysql -h 116.62.149.227 -P 13306 -u root -p123456
use douyin_mall;
DROP TABLE IF EXISTS `order`;

Restart the application to let Hibernate recreate the correct table structure.

8. Configuration Verification Checklist

After complete configuration, confirm the following:

  1. Basic Configuration
  • MySQL service running normally
  • Redis service running normally
  • application-dev.yml configured correctly
  1. Database Connection
  • Command-line cloud database connection possible
  • Project can connect to database
  • Database table structures created correctly
  1. Redis Functionality
  • Redis test interface returns success
  • Normal data storage and retrieval
  • Connection pool functioning correctly
  1. Application Status
  • No error logs during startup
  • Interface calls normal
  • Data operations correct

If any checklist item fails, refer to the corresponding section for troubleshooting and repair.


메타데이터
post_id
aa500dfafb49
slug
spring-boot-project-database-configuration-guide-for-local-and-cloud-environments-aa500dfafb49
url
https://medium.com/@chanmeng666/spring-boot-project-database-configuration-guide-for-local-and-cloud-environments-aa500dfafb49
canonical_url
https://medium.com/@chanmeng666/spring-boot-project-database-configuration-guide-for-local-and-cloud-environments-aa500dfafb49
author_url
https://medium.com/@chanmeng666
status
ok
fetched_at
2026-07-13 06:23:13