我希望能够使用Micronaut的声明性客户端,根据我是在本地开发环境还是在生产环境中,找到不同的endpoint。
我在application.dev.yml
中设置客户端的基本uri:
myserviceclient:
baseUri: http://localhost:1080/endpoint
阅读来自Micronaut的文档,他们让开发人员跳过了相当多的障碍,将动态值输入到实际客户端。它们实际上很混乱。所以我创建了这样的配置:
@ConfigurationProperties(PREFIX)
class MyServiceClientConfig {
companion object {
const val PREFIX = "myserviceclient"
const val BASE_URL = "http://localhost:1080/endpoint"
}
var baseUri: String? = null
fun toMap(): MutableMap<String, Any> {
val m = HashMap<String, Any>()
if (baseUri != null) {
m["baseUri"] = baseUri!!
}
return m
}
}
但是正如您所看到的,这实际上并不是从application.yml
中读取任何值,它只是将const值设置为类的静态值。我希望BASE_URL
值根据我所处的环境是动态的。
为了使用这个类,我创建了一个声明性客户端,如下所示:
@Client(MyServiceClientConfig.BASE_URL)
interface MyServiceClient {
@Post("/user/kfc")
@Produces("application/json")
fun sendUserKfc(transactionDto: TransactionDto)
}
文档显示了一个示例,其中他们从配置映射中插值,如下所示:
@Get("/api/\${bintray.apiversion}/repos/\${bintray.organization}/\${bintray.repository}/packages")
但是如何在@Client()
注释中实现这一点呢?
在该示例中,它们没有显示bintray
是如何定义/注入的/etc。这似乎与@Value()
注释使用的语法相同。我也尝试过使用它,但我尝试使用的每个值最终都是null
。
这是非常令人沮丧的,但我肯定我错过了一个关键的部分,这将使所有的工作。
如果你想在代码中的某个地方使用url:
@Value("${micronaut.http.services.occupancy.urls}")
private String occupancyUrl;
我要把我客户的基地设在application.dev.yml
您可能需要application-dev.yml
。
但是如何在@Client()注释中实现这一点呢?
您可以使用类似于@Client(${myserviceclient.baseUri}”)
的方法将配置键放入@Client
值中。
我将使用来自Micronaut文档(声明性Http客户端)的代码-我正在使用Spock 宠物手术。JAVA 我有一个声明式客户端: 我的目标是当我运行一个测试类时,我想调用(@Replaces)另一个类(PetDummy),而不是PetClient,PetDummy类位于我的测试文件夹中 测试类: 然而,在调用PetClient的最后,我也尝试了@Factory注释,但没有成功 PetClient
Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并使用Spring Web中默认使用的HttpMessageConverters。Spring Cloud集成Ri
尝试使用Micronaut声明性客户端上传多个文件。 http客户端 将多个文件添加到多部分 产品控制器 例外
我正在发送一个请求到一个服务器,它给了我一个200,没有身体(完全可以接受),但是我无法解决如何配置micronaut注释来处理这个问题。无论我尝试什么,它都试图将空响应解码为JSON(至少我认为这是它正在做的,因为它给出了一个意想不到的错误,而不是当身体出错时得到的正常杰克逊错误)。我在微型文档中找不到任何关于如何做到这一点的东西。
我有一个声明式客户端: 我已使用以下命令将客户端超时设置为30秒: 我随机得到: 这种令人讨厌的行为的原因是什么?
当我为我的Micronaut声明性客户端自动连接客户端接口时,我得到这个错误: 正确的方法是什么? 详细资料 我有一个已建立的Grails应用程序,最近我从3升级了它。x到4.0.1。 这个应用程序有一个并行执行多个REST调用的服务,我正在尝试添加一个使用新Micronaut HTTP声明性客户端的新REST调用。 我将客户端库添加到中的: 我的客户端界面如下(在中): 我在中配置了URL: 关