当前位置: 首页 > 面试题库 >

无法将DaoAuthenticationConfigurer应用于已构建的对象

宗苗宣
2023-03-14
问题内容

我收到此异常:

[WARN] org.springframework.web.context.support.GenericWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'accountResource': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private io.ilopezluna.japanathome.service.UserService io.ilopezluna.japanathome.web.rest.AccountResource.userService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.crypto.password.PasswordEncoder io.ilopezluna.japanathome.service.UserService.passwordEncoder; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityConfiguration': Injection of autowired dependencies failed; nested exception is java.lang.IllegalStateException: Cannot apply org.springframework.security.config.annotation.authentication.configurers.userdetails.DaoAuthenticationConfigurer@54aa5730 to already built object
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:293) ~[spring-beans-4.0.7.RELEASE.jar:4.0.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1186) ~[spring-beans-4.0.7.RELEASE.jar:4.0.7.RELEASE]

您可以在https://travis-ci.org/ilopezluna/japan-at-
home/builds/37866955
上查看更多信息

执行测试期间会抛出此异常。但是我无法在我的本地主机上重现它,所以我总是能成功建立一个:S


问题答案:

我花了两天时间,但我相信我终于解决了这个问题。在我的SecurityConfiguration课堂上,我有以下方法:

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(jsr250Enabled=true, prePostEnabled=true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(authenticationService);
    }

}

configureGlobal用一种configure方法代替了该方法:

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(authenticationService);
    }

现在一切正常。

根据此答案的不同之处在于,使用configureGlobal将允许AuthenticationManager全局方法安全性或另一个HttpSecurity(WebSecurityConfigurerAdapter)。

如您在上面看到的,我同时启用了Web Mvc安全性和全局方法安全性。根据我的单元测试,两者都可以继续使用此更改,但是我的办公室在此存在一些关于此更改是否
正确 (即,如果它正确配置了全局方法安全性)或是否存在另一个问题的争论。解。

我们认为问题的根本原因是某种类型的Spring错误,可能是竞争情况。似乎不太可能,只有当我们向项目中添加一个空类时问题才显现出来,而该类的包或名称是什么都没有关系。



 类似资料:
  • 缺陷!源单元“BuildScript”中“语义分析”阶段出现异常不受支持的类文件主版本57 我正在尝试使用以下命令构建apk cd android ./gradlew assembleDebug 但我总是 失败:构建失败,但有例外。 > 问题:无法打开4mbnl7wyuojndhdwxo65gs7ee的设置重映射类缓存(/Users/blickx/.gradle/caches/5.5/script

  • 在gradle attemp构建项目后有一个日志(使用Pro buf) :app:GeneratedBugProto失败 失败:生成失败,出现异常。 > 错误:任务“:app:generateDebugProto”的执行失败。 协议:标准输出:。stderr:/Users//app/build/extracted protos/main:警告:目录不存在/用户//app/src/debug/pro

  • 问题内容: 我正在尝试使用Gradle命令行界面构建我的Android应用。我还将 GRADLE_HOME / bin 添加到环境中。首先,我使用gradle init生成了包装,gradlew在我的项目文件夹中。现在,当我使用此包装程序构建我的应用程序( ./gradlew build )或使用其任何功能时,它尝试下载gradle-2.3.zip文件并失败(以下错误消息)。我不明白的是为什么gr

  • firebase_core:“^1.0.2” firebase_auth:“^1.0.1” cloud_firestore:“^1.0.3” dev_dependencies: flutter_test:sdk:flutter 颤振: 用途-材料-设计:真

  • 下载https://services.gradle.org/distributions/gradle-2.3-bin.zip 线程“main”javax.net.ssl.SSLHandShakeException中的异常: java.security.cert.CertificateException:找不到与services.gradle.org匹配的主题替代DNS名称。在sun.securit

  • 我正在尝试构建我的飘飘应用程序来支持Android12。它适用于Android11,但不支持Android12。我试图添加android:导出=“真”或“假”,但不起作用。如果有人知道,请帮忙 错误日志 错误:ADB 已退出,退出代码为 1 正在执行流安装 adb: 无法安装 /用户/什里克里希纳/马诺伊/项目/颤动/我的应用/构建/应用/输出/颤动-apk/应用.apk: 失败 [INSTALL