Нет подходящего компонента типа 'springfox.documentation.schema.TypeNameExtractor' - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь реализовать Swagger, используя реализацию JHipster в качестве ссылки в моем приложении Kotlin.

Однако, когда я запускаю свои тесты, я получаю следующую ошибку для большинства моихтесты (эти тесты работают нормально, если я уберу этот чванливый код):

Caused by:
    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pageableParameterBuilderPlugin' defined in class path resource [com/application/config/apidoc/SwaggerPluginsAutoConfiguration$SpringPagePluginConfiguration.class]: Unsatisfied dependency expressed through method 'pageableParameterBuilderPlugin' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'springfox.documentation.schema.TypeNameExtractor' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

Мой SwaggerPluginsAutoConfiguration класс:

@Configuration
@ConditionalOnWebApplication
@ConditionalOnBean(Docket::class)
@AutoConfigureAfter(SwaggerAutoConfiguration::class)
class SwaggerPluginsAutoConfiguration {

    @Configuration
    @ConditionalOnClass(Pageable::class)
    class SpringPagePluginConfiguration {

        @Bean
        @ConditionalOnMissingBean
        fun pageableParameterBuilderPlugin(typeNameExtractor: TypeNameExtractor,
                                           typeResolver: TypeResolver): PageableParameterBuilderPlugin {
            return PageableParameterBuilderPlugin(typeNameExtractor, typeResolver)
        }
    }
}

Класс SwaggerAutoConfiguration:

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass(ApiInfo::class, BeanValidatorPluginsConfiguration::class, Servlet::class, DispatcherServlet::class)
@Profile(value = [SPRING_PROFILE_SWAGGER])
@EnableSwagger2
@Import(BeanValidatorPluginsConfiguration::class)
class SwaggerAutoConfiguration(applicationProperties: ApplicationProperties) {
...
}

Если я включу профиль swagger в файл конфигурации моего приложения для тестирования, тесты пройдут.Однако, если профиль отсутствует, тесты завершаются с ошибкой выше.Я не уверен, почему Spring пытается настроить Swagger, если профиль не установлен.

Как я могу настроить это, чтобы конфигурация не пыталась загрузить, если профиль не указан

...