Adding JAR with ObjectMapper makes my ObjectMapper non-discoverable
在jar中从依赖项定义了另一个对象映射器的情况下,如何使我的对象映射器工作?
我正在尝试将Swagger与在Jetty下运行的Jersey 2一起使用。问题是,一旦我将Swagger JAX-RX jar添加到类路径中,就没有发现我的对象映射器,因此我失去了对象的自定义序列化。
这是我的对象映射器的定义方式
1 2 3 |
我已将问题发布给Swagger的维护者,您可以在其中阅读详细信息。
在Jersey的内部进行了数小时的调试后,我发现Swagger自己的对象映射器com.wordnik.swagger.jaxrs.json.JacksonJsonProvider调用了将非空值设置为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public MAPPER locateMapper(Class< ? > type, MediaType mediaType) { // First: were we configured with a specific instance? MAPPER m = _mapperConfig.getConfiguredMapper(); if (m == null) { // If not, maybe we can get one configured via context? m = _locateMapperViaProvider(type, mediaType); if (m == null) { // If not, let's get the fallback default instance m = _mapperConfig.getDefaultMapper(); } } return m; } |
以正确的代码流
我创建了一个小项目,在这里重现了这个问题。
你们将如何建议解决此问题?我可能可以在类型
如问题报告中fehguy所述,使用最新的Swagger版本和使用
1 2 3 4 5 6 7 | public class SwaggerSerializers implements MessageBodyWriter<Swagger> { @Override public boolean isWriteable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { return Swagger.class.isAssignableFrom(type); } |