集成Swagger时出现swagger2Controller Bean创建失败的方法解析错误
解决Swagger集成时"swagger2Controller Bean创建失败"问题
问题根源分析
从你提供的配置代码看,主要存在以下几个触发错误的原因:
- 配置类中
@Beanpublic连写,缺少空格,导致JVM无法正确解析Bean方法,这是"方法解析失败"的直接诱因。 - Spring Boot项目中添加
@EnableWebMvc会覆盖自动配置的WebMvc规则,可能与Swagger的控制器路由逻辑冲突。 - Spring Boot与Swagger(springfox)版本不兼容,也会引发Bean创建失败问题。
分步解决方案
修复语法错误
修正配置类中@Bean与public的空格问题,正确代码格式如下:@Configuration @EnableSwagger2 public class MisToolSwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("co.oasys.mis.tool.restapi")) .paths(PathSelectors.any()) .build(); } }移除不必要的注解
若你使用的是Spring Boot项目,直接删除@EnableWebMvc注解——Spring Boot已自动配置WebMvc环境,手动添加该注解会引发配置冲突。确保依赖版本兼容
若继续使用springfox-swagger2,推荐Spring Boot 2.x搭配springfox 2.9.2的稳定组合,Maven依赖示例:<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>由于springfox已停止维护,更推荐使用springdoc-openapi替代,依赖及配置示例:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.2.0</version> </dependency>对应的配置类(无需
@EnableSwagger2和@EnableWebMvc):@Configuration public class MisToolSwaggerConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("MIS Tool API文档") .version("1.0") .description("MIS Tool接口说明")); } }
内容的提问来源于stack exchange,提问作者bijay
相关产品推荐
相关产品推荐

