groovy - Groovy Micronaut 的 @Client 注入 RxHttpClient 与 RxHttpClient.create 有什么区别?
问题描述
我正在使用@Client
Groovy 中的注释创建一个 Micronaut HTTP 客户端,如果我使用静态常量以外的任何东西,编译器会抱怨。但是,这限制了我通过传入配置值来更改每个环境的 URL。
所以我尝试RxHttpClient.create(myUrl)
在我的服务中使用,并且我发出的相同请求返回 403。RxHttpClient 文档说
创建一个新的 HttpClient。请注意,此方法只能在应用程序的上下文之外使用。在 Micronaut 中,使用 Inject 来 > 注入客户端。
这并不能解释为什么我不应该使用该create
方法,而且我无法向不同环境中的不同服务器发出请求。我正在创建的两个客户端之间有什么区别?
解决方案
@Client
注释将注入一个已被依赖注入的托管客户端,该客户端具有用于跟踪、传播等的附加检测功能。通过使用Micronautcreate
不能依赖注入实例,因此框架的某些功能将不起作用。
此外,create
您必须确保手动close
客户端,因为 Micronaut 无法管理生命周期并在应用程序关闭时彻底关闭客户端。
最后,关于使用静态常量 to @Client
,这不会限制您,因为该值可以包含占位符。例如:
@Client("${my.server}")
然后在application.yml
你可以配置:
my:
server: http://foo.com
或者更好的是,您可以使用新的 HTTP 服务功能。请参阅https://docs.micronaut.io/latest/guide/index.html#serviceDiscoveryManual
推荐阅读
- python - 缺少倒数第二个价值 - 雅虎财务
- wordpress - 引导模式关闭后重置忍者表单字段
- python - Python3 脚本在 time.sleep() 命令处随机停止
- ruby-on-rails - 在 jsonb 列中搜索查询
- python - 如何删除 main.kv 文件中的小部件?
- python - 即时创建一个 json 文件并在 python 中附加日志内容
- wordpress - 从 wordpress html 小部件中删除 autop
- python - 使用 Python pyFPDF 在 PDF 中混合编写英语和阿拉伯语文本时出现问题
- javascript - 根据概率选择一个随机项目
- powershell - 更改 AD 到期日期的日期格式