Spring Ошибка загрузки + Springbox

У меня есть проект загрузки spring, который хочет интегрироваться с swagger через Springbox.

У меня есть мое загрузочное приложение spring и все работает хорошо.

Однако после того, как я добавил Springbox, он не может пройти unit test.

Вот подробности, которые я добавил в проекте.

Для pom.xml добавлен

<!--Swagger io for API doc-->
 <dependency>
 <groupid>io.swagger</groupid>
 <artifactid>swagger-core</artifactid>
 <version>1.5.3</version>
 </dependency>
 <dependency>
 <groupid>io.springfox</groupid>
 <artifactid>springfox-swagger2</artifactid>
 <version>2.2.2</version>
 </dependency>
 <dependency>
 <groupid>io.springfox</groupid>
 <artifactid>springfox-swagger-ui</artifactid>
 <version>2.2.2</version>
 </dependency>

затем с классом конфигурации swagger

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket booksApi() {
 return new Docket(DocumentationType.SWAGGER_2)
 .apiInfo(apiInfo())
 .select()
 .apis(RequestHandlerSelectors.any())
 .paths(PathSelectors.regex("/.*"))
 .build();
}
private ApiInfo apiInfo() {
 return new ApiInfoBuilder()
 .title("blah")
 .description("blah.")
 .termsOfServiceUrl("http://www.blah.com.au")
 .contact("blah")
 .build();
}
}

Ошибка, которую я получаю при запуске mvn clean package,

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webMvcRequestHandlerProvider' defined in URL [jar:file:/Users/jasonfeng/.m2/repository/io/springfox/springfox-spring-web/2.2.2/springfox-spring-web-2.2.2.jar!/springfox/documentation/spring/web/plugins/WebMvcRequestHandlerProvider.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : No qualifying bean of type [org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping] found for dependency [collection of org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping] found for dependency [collection of org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

используемая версия

<parent>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-parent</artifactid>
 <version>1.2.5.RELEASE</version>
</parent>
3 ответа

Заглядывая эту проблему в то время как утром без везения, затем отправил этот вопрос. Сразу после того, как я опубликовал этот вопрос, я нашел решение для этого..... (я обвиняю себя в нехорошем утреннем кофе)

Просто удалите аннотацию @Configuration в классе конфигурации swagger.

Вот ссылка, на которую я ссылаюсь

https://github.com/springfox/springfox/issues/462


Я столкнулся с той же проблемой. Вот решение.

Добавьте это в application-test.properties(создайте один, если он еще не существует)

spring.profiles.active=test

Аннотировать тест (если он еще не присутствует)

@TestPropertySource(locations = "classpath:application-test.properties")

Создайте новый класс конфигурации Swagger и отметьте его следующим образом:

@Configuration
@EnableSwagger2
@Profile("!test")
public class SwaggerConfig {
 @Bean
 public Docket api() {
 .........
 }
}

Это гарантирует, что конфигурация swagger не загружается для тестирования вообще.


Добавить аннотацию профиля ниже

@Profile("dev")
@Configuration
@EnableSwagger2
public class SwaggerConfig {

чтобы swagger не загружался, этот класс не вызывался во время жизненного цикла компиляции/сборки/тестирования и добавьте свойство below к application-test.properties(создайте один, если он еще не указан в папке src/test/resources) spring.profiles.active = тест разрешил проблему для меня.

licensed under cc by-sa 3.0 with attribution.