Spring Boot启动失败:创建filterChain Bean报错求助
Spring Boot启动失败:无法提取方法参数名导致嵌入式Tomcat启动异常
启动Spring Boot应用时遭遇启动失败,报错无法启动嵌入式Tomcat。追踪错误栈后发现,根源是无法提取com.fis.epo.base.security.config.RolesCacheEndpoint类中deleteCachByKey(java.lang.String,java.lang.String)方法的参数名,进而引发连锁Bean创建异常:无法创建healthEndpointWebMvcHandlerMapping、mvcHandlerMappingIntrospector,最终导致filterChain Bean创建失败,webSecurityConfiguration依赖注入不满足。
具体错误日志
{"instant":{"epochSecond":1714980804,"nanoOfSecond":741495900},"thread":"main","level":"ERROR","loggerName":"org.springframework.boot.SpringApplication","message":"应用启动失败","thrown":{"commonElementCount":0,"localizedMessage":"无法启动Web服务器","message":"无法启动Web服务器","name":"org.springframework.context.ApplicationContextException","cause":{"commonElementCount":7,"localizedMessage":"无法启动嵌入式Tomcat","message":"无法启动嵌入式Tomcat","name":"org.springframework.boot.web.server.WebServerException","cause":{"commonElementCount":7,"localizedMessage":"创建名为'org.springframework.security.config.annotation.web.configuration.webSecurityConfiguration'的Bean出错:方法'setFilterChains'参数0存在不满足的依赖:创建类路径资源[com/fis/epo/base/security/config/WebSecurityAutoConfiguration$StandardSecurityConfig.class]中定义的'filterChain' Bean失败:无法实例化[org.springframework.security.web.SecurityFilterChain]:工厂方法'filterChain'抛出异常,消息为:创建类路径资源[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]中定义的'mvcHandlerMappingIntrospector' Bean出错:创建类路径资源[org/springframework/boot/actuate/autoconfigure/health/HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration.class]中定义的'healthEndpointWebMvcHandlerMapping' Bean出错:无法实例化[org.springframework.boot.actuate.endpoint.web.servlet.AdditionalHealthEndpointPathsWebMvcHandlerMapping]:工厂方法'healthEndpointWebMvcHandlerMapping'抛出异常,消息为:无法提取public void com.fis.epo.base.security.config.RolesCacheEndpoint.deleteCachByKey(java.lang.String,java.lang.String)的参数名","message":"创建名为'org.springframework.security.config.annotation.web.configuration.webSecurityConfiguration'的Bean出错:方法'setFilterChains'参数0存在不满足的依赖:创建类路径资源[com/fis/epo/base/security/config/WebSecurityAutoConfiguration$StandardSecurityConfig.class]中定义的'filterChain' Bean失败:无法实例化[org.springframework.security.web.SecurityFilterChain]:工厂方法'filterChain'抛出异常,消息为:创建类路径资源[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]中定义的'mvcHandlerMappingIntrospector' Bean出错:创建类路径资源[org/springframework/boot/actuate/autoconfigure/health/HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration.class]中定义的'healthEndpointWebMvcHandlerMapping' Bean出错:无法实例化[org.springframework.boot.actuate.endpoint.web.servlet.AdditionalHealthEndpointPathsWebMvcHandlerMapping]:工厂方法'healthEndpointWebMvcHandlerMapping'抛出异常,消息为:无法提取public void com.fis.epo.base.security.config.RolesCacheEndpoint.deleteCachByKey(java.lang.String,java.lang.String)的参数名","name":"org.springframework.beans.factory.UnsatisfiedDependencyException","cause":{"commonElementCount":7,"localizedMessage":"创建类路径资源[com/fis/epo/base/security/config/WebSecurityAutoConfiguration$StandardSecurityConfig.class]中定义的'filterChain' Bean出错:无法实例化[org.springframework.security.web.SecurityFilterChain]:工厂方法'filterChain'抛出异常,消息为:创建类路径资源[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]中定义的'mvcHandlerMappingIntrospector' Bean出错"}}}}
解决方案
- 确保编译时保留参数名:
- Maven项目:在
pom.xml中配置maven-compiler-plugin,开启参数名保留<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <parameters>true</parameters> </configuration> </plugin> </plugins> </build> - Gradle项目:在
build.gradle中添加参数配置compileJava { options.parameters = true }
- Maven项目:在
- 为
deleteCachByKey方法的参数添加@Param注解,显式指定参数名:public void deleteCachByKey(@Param("key1") String key1, @Param("key2") String key2) { // 方法实现 } - 检查Spring Boot版本,若使用较旧版本,升级至稳定版(如2.7.x或3.x系列),修复可能存在的Actuator端点参数名提取兼容问题
- 若该端点非业务必需,可临时注释
RolesCacheEndpoint相关配置,先启动应用排查其他问题
内容的提问来源于stack exchange,提问作者Vinay
相关产品推荐
相关产品推荐

