如何通过配置为Helidon WebClient配置JsonbSupport读取器、写入器及媒体支持?
Helidon WebClient 媒体支持配置疑问解答
问题背景
想要仅通过配置文件完成Helidon WebClient的配置,替代代码中手动添加Jsonb支持的操作:
WebClient.builder() .config(Config.create().get("web-client")) .build();
原本代码中需要手动添加的Jsonb支持逻辑:
.addReader(JsonbSupport.reader()) .addWriter(JsonbSupport.writer()) .addMediaSupport(JsonbSupport.create())
尝试了如下配置后功能正常,但不清楚discover-services的作用,以及该配置是否自动添加了Json支持:
web-client: uri: <my-base-uri> media-support: discover-services: true
解答
1. discover-services: true的作用
该配置会开启Helidon WebClient媒体支持服务的自动发现机制,Helidon会通过Java的ServiceLoader机制,自动扫描类路径中所有可用的MediaSupport实现类,并将它们注册到WebClient中,无需手动在代码或配置里逐个指定。
2. 是否自动添加了Json支持
是的。JsonbSupport是Helidon官方提供的标准MediaSupport实现之一,只要你的项目依赖中包含了helidon-media-jsonb模块(通常创建Helidon项目时勾选JSON支持会自动引入),开启discover-services: true后,WebClient会自动注册Jsonb对应的Reader、Writer以及完整的MediaSupport,和你手动调用代码的效果完全一致。
3. 手动指定MediaServices的方式
如果不想依赖自动发现,也可以在services节点下手动指定要加载的MediaSupport类名,示例配置如下:
web-client: uri: <my-base-uri> media-support: services: - "io.helidon.media.jsonb.JsonbSupport"
内容的提问来源于stack exchange,提问作者Bhavin Zalavadia
相关产品推荐
相关产品推荐

