Error creating bean with name '_filterChainProxy' || Error creating bean with

ERROR: 20:54:44: org.springframework.web.context.ContextLoader: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterChainProxy'

: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterChainList': Cannot resolve reference to bean '_rememberMeFilter' while setting bean property 'filters' with key [6]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_rememberMeFilter': Cannot resolve reference to bean '_rememberMeServices' while setting bean property 'rememberMeServices'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_rememberMeServices': Initialization of bean failed; nested exception is org.springframework.security.config.SecurityConfigurationException: More than one UserDetailsService registered. Please use a specific Id in your configuration
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
 
06:19-[org.springframework.web.context.ContextLoader]-[ERROR] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationListener' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext-collector.xml]: Cannot resolve reference to bean 'collectorService' while setting bean property 'collectorService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'collectorService' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'collectorDao' while setting bean property 'collectorDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'collectorDao' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alarmRecordListener' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext-collector.xml]: Cannot resolve reference to bean 'alarminfoService' while setting bean property 'alarminfoService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alarminfoService' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'alarminfoDao' while setting bean property 'alarminfoDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alarminfoDao' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject


	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:254)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
	at java.lang.Thread.run(Thread.java:619)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'collectorService' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'collectorDao' while setting bean property 'collectorDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'collectorDao' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alarmRecordListener' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext-collector.xml]: Cannot resolve reference to bean 'alarminfoService' while setting bean property 'alarminfoService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alarminfoService' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'alarminfoDao' while setting bean property 'alarminfoDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alarminfoDao' defined in file [D:\workspace_drools\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\middleware-collector\WEB-INF\classes\applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
	... 29 more
 

 

报这2个错误,有可能是你使用了 Spring Security,请把配置中 auto-config="true" 去掉试试。

 

<http auto-config='true'><!-- auto-config='true' -->
        <concurrent-session-control max-sessions="10" exception-if-maximum-exceeded="true" />
        <logout logout-url="/j_spring_security_logout"/>
        <intercept-url pattern="/main.jsp" access="IS_AUTHENTICATED_FULLY"/><!--登录用户有权访问-->
        <intercept-url pattern="/main/*" access="IS_AUTHENTICATED_FULLY"/>
        <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp"  default-target-url="/main.jsp" />
	</http>

 

报错信息有可能是以下2种方式:

 

1、Error creating bean with name '_filterChainProxy'

 

2、Error creating bean with name 'sessionFactory': FactoryBean which is currently in creation returned null from getObject

<think>好的,我现在需要帮助用户解决Spring Security中的Bean重复定义问题。用户遇到的错误是“The bean 'springSecurityFilterChain' could not be registered”,因为已经存在同名的Bean,而且覆盖被禁用了。首先,我需要理解这个问题的根本原因。 首先,用户可能同时引入了Spring Security和Spring Boot Actuator的相关依赖。这两个模块都试图自动配置安全相关的Bean,尤其是springSecurityFilterChain。在Spring Boot中,默认情况下不允许Bean的覆盖,所以当两个配置类都试图定义同名的Bean时,就会导致启动失败。 接下来,我需要回顾用户之前的问题历史。用户之前遇到了类找不到的问题,这次的问题可能与依赖配置或版本冲突有关。可能用户添加了新的依赖,或者在升级Spring Boot版本后出现了这个问题。需要检查用户的依赖配置,确认是否有重复的安全配置。 可能的解决方案包括启用Bean覆盖,或者排除自动配置类。但通常不推荐启用覆盖,因为这可能导致不可预见的问题。更好的方法是排除其中一个自动配置类,或者调整依赖关系以避免冲突。 另外,用户可能同时使用了WebFlux和传统的Servlet-based配置,这可能导致自动配置冲突。需要确认项目是基于Servlet还是Reactive的,然后排除相应的配置类。 还需要考虑Spring Boot的版本,不同版本的处理方式可能不同。例如,Spring Boot 2.x和3.x在自动配置方面可能有差异,需要确保依赖版本一致。 最后,建议用户检查他们的安全配置类,是否有自定义的WebSecurityConfigurerAdapter或者类似的配置,导致与自动配置冲突。如果有,可能需要调整自定义配置,或者使用@Primary注解来指定优先的Bean。 总结起来,我需要分步骤引导用户检查依赖、排除自动配置、调整配置类,并确保版本一致性,以解决Bean重复定义的问题。</think>这个错误表明Spring容器中出现了**Bean名称冲突**,具体是`springSecurityFilterChain`这个Bean被两个不同的配置类重复定义。以下是详细分析和解决方案: --- ### **错误本质** ```java The bean 'springSecurityFilterChain' [...] could not be registered A bean with that name has already been defined [...] and overriding is disabled ``` 表示: 1. 存在两个定义同名的Bean 2. Spring默认禁止Bean覆盖(Spring Boot 2.1+默认`spring.main.allow-bean-definition-overriding=false`) --- ### **冲突来源分析** 根据堆栈信息: - **来源1**:`WebSecurityConfiguration` (传统Servlet安全配置) - **来源2**:`ReactiveManagementWebSecurityAutoConfiguration` (响应式Actuator安全配置) 说明项目同时引入了: ✅ Servlet-based Security (如Spring MVC) ✅ Reactive Security (如WebFlux + Actuator) --- ### **分步解决方案** #### **方案1:启用Bean覆盖(临时方案)** 在`application.properties`中添加: ```properties spring.main.allow-bean-definition-overriding=true ``` *注意:此方案可能掩盖更深层次的配置问题* #### **方案2:排除冲突的自动配置** 在`@SpringBootApplication`注解中排除响应式配置: ```java @SpringBootApplication(exclude = { ReactiveManagementWebSecurityAutoConfiguration.class, ManagementWebSecurityConfigurerAdapter.class }) ``` #### **方案3:统一技术栈** 根据项目实际需求选择: - 如果是**Servlet应用**:移除WebFlux依赖 ```xml <!-- 移除响应式依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> ``` - 如果是**响应式应用**:移除Servlet安全配置 ```xml <!-- 移除传统安全配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` #### **方案4:显式定义主Bean(推荐)** 在自定义安全配置类中添加`@Primary`: ```java @Configuration @EnableWebSecurity public class CustomSecurityConfig { @Bean @Primary // 明确指定优先使用此Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // 自定义安全配置 return http.build(); } } ``` --- ### **技术原理对比** | 配置类型 | 适用场景 | 典型特征 | |---------|--------|---------| | `WebSecurityConfiguration` | Servlet应用(Spring MVC) | 使用`FilterChainProxy` | | `ReactiveManagementWebSecurityAutoConfiguration` | 响应式应用(WebFlux) + Actuator | 使用`WebFilterChainProxy` | --- ### **深度排查指南** 1. **检查依赖树**: ```bash mvn dependency:tree | grep 'security' ``` 确认是否同时存在: ```text spring-boot-starter-security (Servlet) spring-boot-starter-webflux (Reactive) ``` 2. **验证配置继承关系**: - 检查是否错误地同时继承了两个父类: ```java extends WebSecurityConfigurerAdapter // Servlet implements WebFluxConfigurer // Reactive ``` 3. **查看自动配置报告**: 启动时添加参数: ```bash java -jar your-app.jar --debug ``` 在日志中搜索: ```text CONFLICTING BEAN DEFINITION ``` --- ### **版本适配建议** | Spring Boot版本 | 推荐配置方式 | |----------------|------------| | 2.7.x及以下 | 优先使用`WebSecurityConfigurerAdapter` | | 3.0.x+ | 推荐Lambda风格配置: ```java @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) .formLogin(withDefaults()) .build(); } ``` --- 通过上述方案,可以解决95%以上的Spring Security Bean冲突问题。如果问题仍存在,建议提供以下信息进一步分析: 1. 完整的`pom.xml`依赖列表 2. 自定义安全配置类代码 3. Spring Boot版本号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值