2017-12-14 18 views
0

私の春のブートプロジェクトにスワッガーを統合しようとしましたが、いつもエラーが表示されます: "名前が 'modelMapperImpl'のBeanを作成できませんでした:Beanクラス[springfox.documentation.swagger2 .mappers.ModelMapperImpl]「しかし、私はswaggerConfigの闊歩から@Configurationが検出されません削除すると、ここに私のコードは次のとおりです。@configurationを削除するとスワッガーが検出されない

の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> 
+0

に起因するようなクラッシュログにそこよりますか? Web上での同様のクラッシュのように見えるのは、Beanクラスのイントロスペクションに失敗した後のセクションによるものです。これはおそらく依存性の問題です。欠落しているものまたは互換性のないもの。 – dskow

答えて

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()])); 
     } 
    }; 
} 
} 

コンフィグ

で次
@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", "[email protected]")) 
      .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} 
+0

basePackageのcom.mycompany.pathに、正しいクラスパスrootを設定してください。 – dskow

+0

同じ結果 'modelMapperImpl'という名前のBeanの作成中にエラーが発生しました:Beanクラスのイントロスペクションに失敗しました[springfox.documentation.swagger2.mappers.ModelMapperImpl] – medAy

関連する問題