删除@configuration

时间:2017-12-14 15:30:26

标签: maven spring-boot swagger swagger-ui swagger-2.0

我尝试将swagger整合到我的春季启动项目中,但我总是收到一个错误: “创建名为'modelMapperImpl'的bean时出错:无法内省bean类[springfox.documentation.swagger2.mappers.ModelMapperImpl]”但是当我从swaggerConfig中删除@configuration时,将无法检测到swagger,这是我的代码:

WebConfig:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", 
"PATCH");
}
}

SwaggerConfig

@EnableSwagger2
@Configuration

public class SwaggerConfig {
@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build();
}
}

的pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.7.0</version>
    </dependency>

1 个答案:

答案 0 :(得分:0)

尝试这种方法。

@Configuration
@ConfigurationProperties(prefix = "mycompany.cors")
public class CorsSettings {

final private Logger log = LoggerFactory.getLogger(CorsSettings.class);
private List<String> origins = new ArrayList<>();

public CorsSettings() {
    log.debug("construct CorsSettings");
}

public List<String> getOrigins() {
    return this.origins;
}

@Bean
public WebMvcConfigurer corsConfigurer() {
    if (origins != null) {
        log.debug("corsOrgins=" + origins);
    } else {
        log.error("corsOrgins=null");
    }
    return new WebMvcConfigurerAdapter() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins(origins.toArray(new String[origins.size()]));
        }
    };
}
}

接下来在Config中

@Configuration
public class SwaggerConfig {

ApiInfo apiInfo() {
    return new ApiInfoBuilder().title("My Swagger API").description("This is a my swagger server")
            .license("").licenseUrl("https://opensource.org/licenses/MIT").termsOfServiceUrl("").version("1.0.0")
            .contact(new Contact("My name", "://www.mycompany.com", "myemail@mycompany.com"))
            .build();
}

@Bean
public Docket customImplementation() {
    return new Docket(DocumentationType.SWAGGER_2).select()
            .apis(RequestHandlerSelectors.basePackage("com.mycompany.path")).build()
            .apiInfo(apiInfo());
}

}

然后在application.yml

mycompany:
  cors:
    origins:
      - ${origin1:http://localhost:8080}
      - ${origin2:http://localhost:8080}
      - ${origin3:http://localhost:8080}
      - ${origin4:http://localhost:8080}