SpringBoot整合SpringSecurity版本不一致问题解决

739 阅读1分钟

概述

今天看了springsecurity的视频学习,没有根据视频中老师的步骤搭建环境,而是自己创建了一个普通的Java项目,然后导包,搭建springboot环境,但是在实际运行项目的过程中报错了。

java.lang.NoClassDefFoundError: org/springframework/beans/factory/SmartInitializingSingleton
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_281] 	
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_281] 	
at java.securit
..........

主要问题就是说我的这个类找不到,在网上查询了一下也是因为版本不匹配的问题!

在发生问题之前我的依赖是这样写的

#  springboot
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.5.3</version>
</dependency>

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

很明显,版本不匹配,但是我本地security只有3.0.5的这个版本,当时也没多想,就直接干上去了,后悔万分呀。哭唧唧。

解决方案

我的项目是使用的maven来进行依赖管理,所以只需要在maven中统一jar依赖的版本。

添加如下代码:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.3</version>
</parent>

添加了这个之后,所有和springboot需要整合的其他框架,所对应的版本号都会趋于统一为匹配2.5.3版本的,不会再发生版本不匹配问题。并且我们所有和springboot需要整合的依赖都不用在添加版本号啦!

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
    </dependency>
    <!--        集成swagger-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.0.5</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Nice!收工。