2015-02-20 6 views
0

Я пытаюсь интегрировать swagger-springmvc 0.9.5 с проектом SpringMVC 3.2 с конфигурацией XML.Интеграция Swagger SpringMVC (Не удалось загрузить метод @PostConstruct)

Мое приложение-config.xml:

<beans xmlns="ht... 

<context:annotation-config /> 
<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean id="messageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> 
    </mvc:message-converters> 
</mvc:annotation-driven> 


<context:component-scan base-package="com.myapp.info.v1.rest.endpoint"/> 
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" /> 


</beans> 

Я получаю следующее сообщение об ошибке:

java.lang.NullPointerException 
com.mangofactory.swagger.models.property.field.FieldModelPropertyProvider.propertiesForSerialization(FieldModelPropertyProvider.java:54) 
com.mangofactory.swagger.models.property.provider.DefaultModelPropertiesProvider.propertiesForSerialization(DefaultModelPropertiesProvider.java:31) 
com.mangofactory.swagger.models.DefaultModelProvider.properties(DefaultModelProvider.java:104) 
com.mangofactory.swagger.models.DefaultModelProvider.modelFor(DefaultModelProvider.java:54) 
com.mangofactory.swagger.readers.ApiModelReader.execute(ApiModelReader.java:70) 
com.mangofactory.swagger.readers.ApiModelReader.execute(ApiModelReader.java:38) 
com.mangofactory.swagger.core.CommandExecutor.execute(CommandExecutor.java:13) 
com.mangofactory.swagger.scanners.ApiListingScanner.scan(ApiListingScanner.java:98) 
com.mangofactory.swagger.core.SwaggerApiResourceListing.initialize(SwaggerApiResourceListing.java:72) 
com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin.initialize(SwaggerSpringMvcPlugin.java:427) 
... 

Я начал отлаживать, и понял следующее:

  1. ObjectMapper равна нулю
  2. setObjectMapper никогда не называется
  3. setup() никогда не вызывается, хотя у него есть аннотация @PostConstruct.

Я нашел три сообщения с одинаковой ошибкой, но ни один из них не кажется актуальным. Я что-то забыл? Я новичок в платформе SpringMVC.

Sidenote: Я также экспериментировал с swagger-springmvc 0.6.6 и сумел заставить его работать.

+0

Для чего нужны конвертеры сообщений? попробуйте удалить это и посмотреть, помогает ли он –

+0

Он также не работает с Karens

+0

После вашего обновления кажется, что значение objectMapper должно быть либо ** ref ** для bean-компонента, либо встроенный компонент. '' 'value = classpath * ...' '' определенно не так. Также он должен быть экземпляром '' 'ObjectMapper'''. –

ответ

1

У нас были аналогичные проблемы в/Blueprint приводом среды OSGi. По какой-то причине «касание» компонента JacksonSwaggerSupporty вызывает корректный вызов метода PostConstruct. Это нехорошо - но рабочий обходной путь. Боб, который настраивает наши контексты swagger и spring в OSGi, содержит следующее:

 // for some reason this line causes @PostConstruct to be called on bean correctly! 
    applicationContext.getBean(JacksonSwaggerSupport.class); // Do not remove! 
+0

Фантастический. Спасибо за ваш ответ, который помог мне найти решение. Это то, что сработало для моей XML-конфигурации: '' – Karens

2

Попробуйте изменить конфигурацию, чтобы передать в экземпляре объекта картографа и посмотреть, если это помогает

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean id="messageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" > 
      <property name="objectMapper" ref="jacksonObjectMapper" /> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

<bean id="jacksonObjectMapper" class="[replace with default ObjectMapper or your custom subclass]" /> 
+0

Спасибо за ваш быстрый ответ! Я отредактировал свой вопрос с дополнительной информацией и включил файл mapper.xml. Все еще борется с подключением objectMapper. Есть идеи? – Karens

+0

Если я ссылаюсь на '' Я получаю такое же исключение NullPointerException. Что я могу попробовать? – Karens

Смежные вопросы