gpt4 book ai didi

java - springSecurityFilterChain - ObjectPostProcessor 是必需的 bean 异常

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:20 25 4
gpt4 key购买 nike

我正在使用 Spring Security(spring-boot-starter-web 和 spring-boot-starter-security)构建 Spring Boot 应用程序。我的应用程序在启动期间收到以下错误:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IllegalStateException: org.springframework.security.config.annotation.ObjectPostProcessor is a required bean. Ensure you have used @EnableWebSecurity and @Configuration
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:625) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:455) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1288) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE]
...

我的应用程序类包含以下内容:

@SpringBootApplication
public class CustomPropertiesApplication {

public static void main(String[] args) {
SpringApplication.run(CustomPropertiesApplication.class, args);
}
}

下一类中的 bean 似乎是问题所在。如果被排除,那么应用程序将启动而不会出现错误。

@Configuration
@EnableWebSecurity
public class MyConfig extends WebSecurityConfigurerAdapter {

@Bean
public CustomPropertyPlaceholderConfigurer propertyConfigurer(ApplicationContext context) {
return new CustomPropertyPlaceholderConfigurer();
}

}

现在,这个 CustomPropertyPlaceholderConfigurer 类什么也不做,我有一些类似的旧类,但在尝试解决此问题时,我从测试应用程序中删除了其他所有内容。

public class CustomPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
}

我不知道下一步该尝试什么。我在 Spring Security 和 Spring Boot 中查找了有关构建自定义属性占位符配置器的详细信息,但没有找到任何有用的内容。

版本:Spring Boot - 2.1.0.RELEASE | Spring Security - 5.1.1.RELEASE | JDK 1.8

此外,我意识到这个应用程序实际上并没有做任何事情,有一个更大的应用程序具有更复杂的逻辑,而这里的这个示例应用程序只是为了复制我的问题,使其在 stackoverflow 中变得更小。

最佳答案

我现在看到答案在我的输出日志中是正确的,但我只是没有看到它。

o.s.c.a.ConfigurationClassEnhancer:@Bean方法MyConfig.propertyConfigurer是非静态的并返回一个可分配给Spring的BeanFactoryPostProcessor接口(interface)的对象。这将导致无法处理方法声明@Configuration类中的@Autowired、@Resource和@PostConstruct等注释。向此方法添加“static”修饰符以避免这些容器生命周期问题;有关完整详细信息,请参阅@Bean javadoc。

向我的 bean 添加静态解决了该问题。

关于java - springSecurityFilterChain - ObjectPostProcessor 是必需的 bean 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53232259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com