Groovy Micronaut 的 @Client 注入 RxHttpClient 与 RxHttpClient.create 有什么区别?
What is the difference between Groovy Micronaut's @Client injected RxHttpClient vs RxHttpClient.create?
我正在使用 Groovy 中的 @Client
注释创建一个 Micronaut HTTP 客户端,如果我使用除静态常量以外的任何内容,编译器会报错。但是,这限制了我通过传入配置值来更改每个环境的 URL。
所以我尝试在我的服务中使用 RxHttpClient.create(myUrl)
,并且我正在发出相同的请求 returns 403。RxHttpClient 文档说
Create a new HttpClient. Note that this method should only be used
outside of the context of an application. Within Micronaut use Inject to > inject a client instead.
这并不能解释为什么我不应该使用create
方法,而且我无法向不同服务器上的不同服务器发出请求环境。我创建的两个客户端有什么区别?
@Client
注解将注入一个托管客户端,该客户端已依赖注入,并具有用于跟踪、传播等的附加检测功能。通过使用 create
,Micronaut 无法依赖注入实例,因此某些功能框架将无法工作。
此外 create
你必须确保手动 close
客户端,因为 Micronaut 无法管理生命周期并在应用程序关闭时干净地关闭客户端。
最后,关于对 @Client
使用静态常量,这限制了您是不正确的,因为该值可以包含占位符。例如:
@Client("${my.server}")
然后在application.yml
中可以配置:
my:
server: http://foo.com
或者更好的是,您可以使用新的 HTTP 服务功能。参见 https://docs.micronaut.io/latest/guide/index.html#serviceDiscoveryManual
我正在使用 Groovy 中的 @Client
注释创建一个 Micronaut HTTP 客户端,如果我使用除静态常量以外的任何内容,编译器会报错。但是,这限制了我通过传入配置值来更改每个环境的 URL。
所以我尝试在我的服务中使用 RxHttpClient.create(myUrl)
,并且我正在发出相同的请求 returns 403。RxHttpClient 文档说
Create a new HttpClient. Note that this method should only be used outside of the context of an application. Within Micronaut use Inject to > inject a client instead.
这并不能解释为什么我不应该使用create
方法,而且我无法向不同服务器上的不同服务器发出请求环境。我创建的两个客户端有什么区别?
@Client
注解将注入一个托管客户端,该客户端已依赖注入,并具有用于跟踪、传播等的附加检测功能。通过使用 create
,Micronaut 无法依赖注入实例,因此某些功能框架将无法工作。
此外 create
你必须确保手动 close
客户端,因为 Micronaut 无法管理生命周期并在应用程序关闭时干净地关闭客户端。
最后,关于对 @Client
使用静态常量,这限制了您是不正确的,因为该值可以包含占位符。例如:
@Client("${my.server}")
然后在application.yml
中可以配置:
my:
server: http://foo.com
或者更好的是,您可以使用新的 HTTP 服务功能。参见 https://docs.micronaut.io/latest/guide/index.html#serviceDiscoveryManual