Jersey:禁用默认 JSON 提供程序
Jersey: disable default JSON provider
我正在使用 Jersey 2.17,JSON 和自动功能发现。
我有我的自定义 JSON 提供程序扩展 JacksonJsonProvider
。注释为@Provider
并自动注册,与默认自带的相同:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
我想 disable/exclude 默认一个而不放弃功能 scanning/manually 注册所有内容。
我想出的唯一解决方案是 @Priority(Integer.MAX_VALUE)
以确保我的提供商具有更高的优先级,但我不喜欢依赖优先级的想法。
尝试了jersey.config.disableJsonProcessing
,但似乎没有任何改变
是的,所以 Jackson 功能包含在 auto-discoverable 中,所以它会自动注册。我看到了几个选项。
你可以...
使用 属性
禁用自动发现功能
CommonProperties.FEATURE_AUTO_DISCOVERY_DISABLE
- or -
"jersey.config.disableAutoDiscovery"
唯一的问题是,您希望自动注册的任何其他功能(也是自动发现的)都需要重新注册。 (自动发现的功能不多,所以禁用它可能不是什么大问题)。
你可以...
不使用 jersey-media-json-jackson
而是使用
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.5.0</version>
</dependency>
jersey-media-json-jackson
实际上使用了那个提供者,它实际上并没有提供任何它自己的 Jackson 功能。它真正做的就是注册 MBR、MBW 和 ExceptionMapper,并将其包装在自动发现中。您扩展的 JacksonJsonProvider
或 JacksonJaxbJsonProvider
就在那里。您可能还想注册 JsonParseExceptionMapper
和 JsonMappingExceptionMapper
.
还有...
不确定为什么要扩展 JacksonJsonProvider
,但如果只是为了注册自己的 ObjectMapper
,更常见的方法是在 ContextResolver
[=23] 中配置它=]
我正在使用 Jersey 2.17,JSON 和自动功能发现。
我有我的自定义 JSON 提供程序扩展 JacksonJsonProvider
。注释为@Provider
并自动注册,与默认自带的相同:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
我想 disable/exclude 默认一个而不放弃功能 scanning/manually 注册所有内容。
我想出的唯一解决方案是 @Priority(Integer.MAX_VALUE)
以确保我的提供商具有更高的优先级,但我不喜欢依赖优先级的想法。
尝试了jersey.config.disableJsonProcessing
,但似乎没有任何改变
是的,所以 Jackson 功能包含在 auto-discoverable 中,所以它会自动注册。我看到了几个选项。
你可以...
使用 属性
禁用自动发现功能CommonProperties.FEATURE_AUTO_DISCOVERY_DISABLE
- or -
"jersey.config.disableAutoDiscovery"
唯一的问题是,您希望自动注册的任何其他功能(也是自动发现的)都需要重新注册。 (自动发现的功能不多,所以禁用它可能不是什么大问题)。
你可以...
不使用 jersey-media-json-jackson
而是使用
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.5.0</version>
</dependency>
jersey-media-json-jackson
实际上使用了那个提供者,它实际上并没有提供任何它自己的 Jackson 功能。它真正做的就是注册 MBR、MBW 和 ExceptionMapper,并将其包装在自动发现中。您扩展的 JacksonJsonProvider
或 JacksonJaxbJsonProvider
就在那里。您可能还想注册 JsonParseExceptionMapper
和 JsonMappingExceptionMapper
.
还有...
不确定为什么要扩展 JacksonJsonProvider
,但如果只是为了注册自己的 ObjectMapper
,更常见的方法是在 ContextResolver
[=23] 中配置它=]