首页 > 解决方案 > AlreadyBuiltException:此对象已被构建

问题描述

将 Spring Boot 从 2.1.10 升级到 2.2.1 时出现安全配置错误

org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:640)
    ... 60 common frames omitted
Caused by: org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
    at org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:44)
    at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain(WebSecurityConfiguration.java:104)
    at jdk.internal.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 61 common frames omitted

标签: javaspring-bootoauth-2.0spring-security-oauth2

解决方案


安全性配置了两次“.anyRequest().authenticated()”

 http
        .csrf().disable()
        .httpBasic().and()
        .authorizeRequests().antMatchers("/actuator/**").hasAnyRole("ACTUATOR")
        .anyRequest().authenticated()
        .anyRequest().authenticated();

推荐阅读