当前位置: 首页 > 知识库问答 >
问题:

Quarkus&Microprofile:是否有更好的方法将Application.Properties中的属性使用到@ClientHeaderParam中?

闾丘选
2023-03-14

我尝试了不同的方法来实现这一点:

  • 直接将com.acme.configuration.getKey使用到@ClientHeaderParam值属性
  • 创建StoresClientHeadersFactory类,该类实现ClientHeadersFactory接口以注入配置

最后,我找到了下面描述的使其工作的方法。

我的问题是:有没有更好的方法做这件事?

    null
@Path("/stores")
@RegisterRestClient
@ClientHeaderParam(name = "ApiKey", value = "{com.acme.Configuration.getStoresApiKey}")
public interface StoresService {

    @GET
    @Produces("application/json")
    Stores getStores();

}
  • configuration.java
@ApplicationScoped
public class Configuration {

    @ConfigProperty(name = "apiKey.stores")
    private String storesApiKey;

    public String getKey() {
        return storesApiKey;
    }

    public static String getStoresApiKey() {
        return CDI.current().select(Configuration.class).get().getKey();
    }

}
  • StoresController.java,它是REST控制器
@Path("/stores")
public class StoresController {

    @Inject
    @RestClient
    StoresService storesService;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Stores getStores() {
        return storesService.getStores();
    }

}

共有1个答案

谷梁波
2023-03-14

派对迟到了,但把这个放在这里供我自己参考。使用@ClientHeaderParam和@HeaderParam似乎是有区别的,所以我进一步研究了一下:根据Microprofile文档,您可以在花括号中为值设置一个计算方法。该方法可以提取属性值。

有关更多示例,请参阅链接。

编辑:我想出的与原来的相似,但是在接口上使用了默认的方法,所以您至少可以丢弃配置类。另外,使用org.eclipse.microprofile.config.config和ConfigProvider类获取配置值:

@RegisterRestClient
@ClientHeaderParam(name = "Authorization", value = "{getAuthorizationHeader}")
public interface StoresService {

    default String getAuthorizationHeader(){
        final Config config = ConfigProvider.getConfig();
        return config.getValue("apiKey.stores", String.class);
    }

    @GET
    @Produces("application/json")
    Stores getStores();

 类似资料:
  • 问题内容: 对css和纯粹的开发人员了解不多,但是有些无法解决的 困惑却使我无法解决 我正在使用带有一些Jquery灯箱效果的表单,该表单带有和 在我的css文件中,我看到了以下条目 但是,当此表单显示为jquery弹出窗口时,它会在Mozilla中正确显示,但在Google chrome和IE上,该框不能像部分表单那样正常显示,而是作为滚动条显示。 当我通过萤火虫(第一次使用:)看到它时,它向我

  • 我正在尝试将属性从pom.xml加载到application.properties中。我想创建两个配置文件:dev和prod来使用不同的数据库URL。我使用Jenkins作为CI,在我的所有应用程序中(主要是Spring MVC,没有引导项目)都使用maven配置文件部署到Tomcat。使用maven属性可以做到这一点吗?我尝试了这样的方法:

  • 本文向大家介绍JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法,包括了JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法的使用技巧和注意事项,需要的朋友参考一下 JavaScript hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Objec

  • 问题内容: 我有这样的事情: 现在要拥有此数组的总数量,我正在做这样的事情: 当只有一个数组时,这很容易,但是我想对其他具有不同属性名称的数组进行总结。 如果我可以做这样的事情,我会更开心: 但我不知道该如何处理,以至于我将来可以像这样重用它: 回答 我决定使用@ gruff-bunny建议,因此避免原型原型本机对象(数组) 我只是对他的答案做了一些修改,以验证数组,并且sum的值不为null,这

  • 在Quarkus上,我试图用动态的baseUrl构建一个反应性的microprofile REST客户机,但是到目前为止,在所有的实现变体中,REST调用都在订阅后阻塞。有趣的是,非反应实现的工作方式像一个魅力。让我们看看一些代码... REST客户端接口: