无法解析SpingBoot版本2.0.6中的WebSecurityConfigurerAdapter类

时间:2018-10-28 06:07:58

标签: spring-boot spring-security

当我尝试编写配置类时,WebSecurityConfigurerAdapter类无法解析,注释@EnableWebSecurity也无法解析。

我认为这是由版本冲突引起的,因此我尝试更改spring-boot-starter-security的版本。事实证明,该类无法在版本2.0.6中扩展,但可以在版本2.0.0中使用。

那么2.0.6中是否有WebSecurityConfigurerAdapter的替代品?

这是我的pom.xml

<groupId>com.example</groupId>
<artifactId>registertest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>registertest</name>
<description>Demo login and register for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!--Version 2.0.6 will cause a conflict, we need to modify the version to 1.5.6-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>2.0.0.RELEASE</version>
    </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>
    <!--if you do not want to modify the version above, the following dep is the substitution-->
    <!--<dependency>-->
        <!--<groupId>org.springframework.security</groupId>-->
        <!--<artifactId>spring-security-config</artifactId>-->
        <!--<version>4.2.3.RELEASE</version>-->
    <!--</dependency>-->

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.nekohtml</groupId>
        <artifactId>nekohtml</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2 个答案:

答案 0 :(得分:1)

如果使用父级,则不需要在依赖项中提及版本,因为它将自动处理所有必需的兼容版本和负载。

因此请在下面使用而不使用版本。

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

注意:如果您想扩展WebSecurityConfigurerAdapter或可以实现WebSecurityConfigurer,则srcfiles := $(shell find . -path .build -prune -o -type f -name '*.lua' -print) dstfiles := $(addprefix .build/,$(srcfiles)) .PHONY: compress clean deploy compress: $(dstfiles) $(dstfiles): .build/%: % mkdir -p $(dir $@) luamin -f $< > $@ clean: rm -rf ./.build deploy: .build cp ./.build/* ~ 在2.0.6中可用。

答案 1 :(得分:0)

在Spring Boot 2.0.6中,您仍将使用:

 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

如果您进行了版本升级,则可能会将它们都保存在.m2存储库中,而maven不知道要使用哪个版本。

解决方案:请删除.m2文件夹-根据您的操作系统检查其位置-请注意,该文件夹为隐藏文件夹。

删除spring-boot-starter-security的版本并运行命令mvn clean package以重新导入所有依赖项。