Groovy Micronaut的@Client注入的RxHttpClient与RxHttpClient.create有什么区别?

时间:2018-09-22 03:44:38

标签: groovy micronaut

我正在使用Groovy中的@Client注释创建Micronaut HTTP客户端,如果我使用的不是静态常量,则编译器会抱怨。但是,这限制了我无法通过传入配置值来更改每个环境的URL。

因此,我尝试在服务中使用RxHttpClient.create(myUrl),而我发出的相同请求返回403。RxHttpClient文档说

  

创建一个新的HttpClient。请注意,此方法仅应使用   在应用程序上下文之外。在Micronaut中,使用“注入”>“注入客户端”。

这不能解释为什么,我不应该使用create方法,而且我无法向不同环境下的不同服务器发出请求。我要创建的两个客户端有什么区别?

1 个答案:

答案 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