Spring Boot基础

发布于:2025-07-12 ⋅ 阅读:(26) ⋅ 点赞:(0)

5.Spring Boot 配置解析

5.1. 基础服务

  • 端口server.port=8080(应用启动后监听 8080 端口)
  • 应用名称spring.application.name=Chat64(注册到服务发现等场景时的标识)

5.2. 数据库连接(MySQL)

  • URLjdbc:mysql://localhost:3306/ai-chat(连接本地 3306 端口的 ai-chat 数据库,含时区、编码等参数)
  • 驱动com.mysql.cj.jdbc.Driver(MySQL 8.0+ 官方驱动)
  • 连接池com.alibaba.druid.pool.DruidDataSource(阿里 Druid 连接池,需确保依赖已引入)
  • 认证username=rootpassword=weiailzc1314(数据库登录凭据)

5.3. 视图与模板(Thymeleaf)

  • 缓存spring.thymeleaf.cache=false(关闭模板缓存,开发环境便于实时生效)

5.4数据库配置问题总结及解决措施笔记

5.4.1 常见问题
1. 8080 端口被占用

在配置数据库相关服务(如基于数据库的 Web 应用,常使用 8080 作为默认端口)时,系统提示 8080 端口已被占用,导致服务无法正常启动监听该端口。

2. 数据库端口不匹配

配置中指定的数据库端口(如 MySQL 默认 3306 )与实际数据库服务监听的端口不一致,使得应用无法连接到数据库。

3. 用户名密码不匹配

在连接数据库时,配置的用户名和密码与数据库中记录的不相符,从而导致身份验证失败,无法建立连接。

4. 数据库名不匹配

应用配置中指定要连接的数据库名称,在数据库服务器中不存在,或者拼写错误,造成连接时找不到对应的数据库。

5.4.2 解决措施
1. 8080 端口被占用
  • 检查占用进程:
    • Windows:打开命令提示符,执行 netstat -ano | findstr :8080 ,找到占用 8080 端口的进程 ID ,再打开任务管理器,通过 PID 找到对应的进程并结束。
  • 修改应用端口:在应用的配置文件(如 Spring Boot 的 application.propertiesapplication.yml )中,修改服务端口,如将 server.port=8080 改为 server.port=8000
2. 数据库端口不匹配
  • 确认数据库端口:
    • MySQL:查看 MySQL 的配置文件(my.inimy.cnf ,位置因系统而异),找到 port 配置项,确认实际监听端口。
    • 其他数据库:参考对应数据库的官方文档,查看端口配置位置。
  • 更新应用配置:在应用的数据库连接配置中,修改端口号为数据库实际监听的端口,如 jdbc:mysql://localhost:实际端口/数据库名
3. 数据库名不匹配
  • 创建数据库:打开数据库客户端(Navicat )
  • 核对拼写:检查应用配置文件中数据库名的拼写,确保与数据库中创建的名称一致。

6.MD5 加密原理与实现

MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可生成 128 位(16 字节)的哈希值。其主要特点:

  • 固定输出长度:无论输入数据长度如何,输出始终为 32 位十六进制字符串(16 字节二进制数据)
  • 不可逆性:无法从哈希值反推原始数据
  • 雪崩效应:输入的微小变化会导致哈希值大幅改变
  • 不安全性:已被证明存在碰撞攻击,不建议用于密码存储

6.1代码实现分析

提供的PasswordUtil类包含三个核心方法:

  1. MD5 加密方法
public static String md5(String s) {
   
    try {
   
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] bytes = md.digest(s.getBytes("utf-8"));
        return toHex(bytes);
    } catch (Exception e) {
   
        throw new RuntimeException(e);
    }
}
  • 使用 Java 标准库MessageDigest实现 MD5 计算
  • 将输入字符串转换为 UTF-8 字节数组进行处理
  • 异常处理采用 RuntimeException 封装,简化调用但可能隐藏问题
  1. 字节数组转十六进制字符串
private static String toHex(byte[] bytes) {
   
    final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
    StringBuilder ret = new StringBuilder(bytes.length * 2);
    

网站公告

今日签到

点亮在社区的每一天
去签到