首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >org.springframework.beans.factory.BeanDefinitionStoreException:无法处理configuration类的导入候选项

org.springframework.beans.factory.BeanDefinitionStoreException:无法处理configuration类的导入候选项
EN

Stack Overflow用户
提问于 2021-07-08 02:32:20
回答 1查看 351关注 0票数 0

在我的微服务Spring Boot应用程序中,我为REST api的文档添加了Swagger。在此之前,我的Spring Boot微服务启动得很好。但是当我添加add my SwaggerConfig时,项目无法启动。我有这样的错误:

代码语言:javascript
运行
复制
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.myproject.MyApplication]; nested exception is java.io.FileNotFoundException: class path resource [springfox/bean/validators/configuration/BeanValidatorPluginsConfiguration.class] cannot be opened because it does not exist

SwaggerConfig是公共项目,它增加了对我微服务pom的依赖性。

这是我的项目配置

SwaggerConfig

代码语言:javascript
运行
复制
package com.project.common.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.bind.annotation.RequestMethod;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.List;

@Configuration
@EnableSwagger2
@Import({ BeanValidatorPluginsConfiguration.class })
public class SwaggerConfig {

    @Value("${swagger.api.title: no title}")
    private String title;
    

    @Value("${swagger.api.package}")
    private String apipackage;
    

    @Value("${swagger.api.version:no version}")
    private String version;
    

    @Value("${swagger.api.description:no description}")
    private String description;

    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.basePackage(apipackage))
                .paths(PathSelectors.any()).build().useDefaultResponseMessages(false)
                .apiInfo(new ApiInfoBuilder().title(title).description(description)
                        .version(version).build())

                .globalResponseMessage(RequestMethod.GET,defaultResponse())
                .globalResponseMessage(RequestMethod.POST,defaultResponse())
                .globalResponseMessage(RequestMethod.PUT,defaultResponse())
                .globalResponseMessage(RequestMethod.DELETE,defaultResponse());
    }
    
    private static List<ResponseMessage> defaultResponse(){
        return 
                List.of(new ResponseMessageBuilder().code(500).message("Internal server error").build(),
                        new ResponseMessageBuilder().code(400).message("bad request").build(),
                        new ResponseMessageBuilder().code(404).message("not found").build());
    }

}

主类

代码语言:javascript
运行
复制
package com.project.company;

import com.project.common.config.SwaggerConfig;
import com.project.company.infrastructure.config.MyApplicationConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;

import java.util.ArrayList;
import java.util.List;

@SpringBootApplication(exclude={SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
@Import({MyApplicationConfig.class, SwaggerConfig.class})
public class MyCompanyApplication {

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

    @Bean
    public CommandLineRunner init(){
        return (String... args)->{

            // do something

        };
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-07-08 05:54:25

我发现了我的错误。我忘记了这个依赖关系:

代码语言:javascript
运行
复制
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-bean-validators</artifactId>
 </dependency>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68291435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档