解决 Spring Boot 项目缺失 Spring Security 依赖

目录

背景环境

在使用 Spring Security 开发 Spring Boot 应用时,遇到一个问题:在 Maven 依赖中找不到org.springframework.security.core等关键包


关键字

Java,Springboot,依赖缺失


问题现象

  • 在 VS Code 的 Maven 依赖树中搜索不到spring-security-core
  • 代码中无法导入SecurityContextHolder等核心类
  • 控制台报错java: package org.springframework.security.core does not exist

根本原因

Spring Boot 项目默认不包含 Spring Security 依赖,需要通过以下方式主动引入:

  1. 未添加spring-boot-starter-security依赖
  2. Maven 依赖版本冲突
  3. IDE 未正确加载依赖(常见于 VS Code)

解决方案

第一步:添加 Spring Security 依赖

pom.xml中添加官方 Starter 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

版本对应关系:

Spring Boot 版本 Spring Security 版本
3.x 6.x
2.x 5.x

第二步:验证依赖加载

方法 1:检查依赖树

mvn dependency:tree | grep security

正常输出应包含:

[INFO] +- org.springframework.boot:spring-boot-starter-security:jar:3.1.5

[INFO] | +- org.springframework.security:spring-security-config:jar:6.1.5

[INFO] | | \- org.springframework.security:spring-security-core:jar:6.1.5

方法 2:代码验证

新建测试类:

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;

public class SecurityTest {
    public static void main(String[] args) {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        System.out.println(auth);
    }
}

第三步:常见问题排查

问题 1:依赖未下载

症状:Maven 控制台出现Could not resolve dependencies错误

解决方案

对于网络情况特殊,比如无法下载依赖,就不要轻易尝试,先试试后面的方法

# 清理本地仓库缓存
mvn dependency:purge-local-repository

# 强制重新下载
mvn clean install -U
命令行为解析

mvn dependency:purge-local-repository

  1. 不会完全删除本地仓库,该命令只会:
  • 清理当前项目的依赖缓存(位于~/.m2/repository 中对应目录)
  • 删除已下载但未被引用的临时文件
  1. 安全边界
  • 不会删除其他项目的依赖
  • 不会删除正在被其他项目使用的依赖
  • 不会删除 Maven 的核心插件

问题 2:版本冲突

症状:出现NoSuchMethodError等运行时异常

解决方案:显式指定版本

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>2.7.18</version> <!-- 按需调整 -->
</dependency>

问题 3:如果依赖存在,IDE 未识别

症状:VS Code 仍然报红但 Maven 命令正常

解决方案

  1. 执行 Ctrl+Shift+P > Java: Clean Java Language Server Workspace
  2. 重启 VS Code
  3. 检查.classpath文件是否包含 security 依赖

完整配置示例

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.5</version>
    </parent>

    <dependencies>
        <!-- Spring Security核心依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <!-- Web支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

总结

通过以下三个步骤可以解决大部分的依赖缺失问题:

✅ 正确添加spring-boot-starter-security依赖
✅ 执行 Maven 依赖树验证
✅ 清理 IDE 缓存并重建索引