我正在使用Groovy中的@Client
注释创建Micronaut HTTP客户端,如果我使用的不是静态常量,则编译器会抱怨。但是,这限制了我无法通过传入配置值来更改每个环境的URL。
因此,我尝试在服务中使用RxHttpClient.create(myUrl)
,而我发出的相同请求返回403。RxHttpClient文档说
创建一个新的HttpClient。请注意,此方法仅应使用 在应用程序上下文之外。在Micronaut中,使用“注入”>“注入客户端”。
这不能解释为什么,我不应该使用create
方法,而且我无法向不同环境下的不同服务器发出请求。我要创建的两个客户端有什么区别?
答案 0 :(得分:0)
git reflog show
批注将注入一个托管客户端,该客户端已经依赖注入了其他工具功能以进行跟踪,传播等。通过使用@Client
Micronaut无法依赖注入实例,因此框架的某些功能获得了成功。不行。
除了create
之外,您还必须确保手动create
客户端,因为Micronaut无法管理生命周期并在应用程序关闭时彻底关闭客户端。
最后,关于对close
使用静态常量,这并不限制您,因为该值可以包含占位符。例如:
@Client
然后在@Client("${my.server}")
中进行配置:
application.yml
甚至更好的是,您可以使用新的HTTP服务功能。参见https://docs.micronaut.io/latest/guide/index.html#serviceDiscoveryManual