首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在quarkus中注入来自application.properties的自定义属性

在Quarkus中注入来自application.properties的自定义属性是一个常见的需求,它允许开发者配置应用程序的行为,而不需要修改代码。以下是关于这个问题的完整答案:

基础概念

Quarkus是一个为GraalVM和JVM设计的现代、反应式Kubernetes原生Java框架。它简化了Spring和CDI(Contexts and Dependency Injection)的使用,使得开发者可以更高效地构建微服务和无服务器应用程序。

application.properties是Quarkus(以及许多其他Java框架)用于配置应用程序的文件。它通常位于项目的src/main/resources目录下。

注入自定义属性

要在Quarkus中注入来自application.properties的自定义属性,你可以使用CDI的@ConfigProperty注解。

步骤

  1. 定义属性:在application.properties文件中定义你的自定义属性。
代码语言:txt
复制
# src/main/resources/application.properties
my.custom.property=value
  1. 注入属性:在你的Java类中使用@ConfigProperty注解来注入这个属性。
代码语言:txt
复制
import javax.inject.Inject;
import org.eclipse.microprofile.config.inject.ConfigProperty;

public class MyService {

    @Inject
    @ConfigProperty(name = "my.custom.property")
    String myCustomProperty;

    public void printProperty() {
        System.out.println("My custom property: " + myCustomProperty);
    }
}

优势

  • 灵活性:通过配置文件管理属性,使得在不修改代码的情况下更改应用程序行为成为可能。
  • 集中管理:所有配置都集中在一个地方,便于维护和管理。
  • 环境特定配置:可以为不同的环境(如开发、测试、生产)提供不同的配置文件。

类型

  • 字符串:如上例所示,可以直接注入字符串类型的属性。
  • 数字和布尔值:Quarkus会自动将配置值转换为相应的基本数据类型。
  • 枚举:可以使用@ConfigProperty注解的type属性来指定枚举类型。

应用场景

  • 数据库连接:配置数据库URL、用户名和密码。
  • API密钥:存储和使用第三方服务的API密钥。
  • 日志级别:根据环境调整应用程序的日志级别。

常见问题及解决方法

属性未找到

  • 原因:可能是属性名称拼写错误,或者属性文件路径不正确。
  • 解决方法:检查application.properties文件中的属性名称是否正确,并确保文件位于正确的位置。

类型转换错误

  • 原因:尝试将一个无法转换为指定类型的字符串注入到属性中。
  • 解决方法:确保配置值与目标类型兼容,或者使用自定义的转换器。

参考链接

通过以上步骤和注意事项,你应该能够在Quarkus中成功注入来自application.properties的自定义属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自定义配置类,读取Application.properties中的参数

场景 在开发过程中,我们可能需要指定一些固定的参数,或者配置一些其它第三方参数。但是在后期应用中,可能需要对改内容进行不定期的修改。为了降低项目重新部署的成本。...我们可以将这些内容直接当成配置写在application.yml中,方便后期修好,同时添加一个实体类,方便读取配置参数 实际应用 1....配置参数的添加 比如我这边对接的是华为的vcm模块,将常用的参数配置在外面 # 自定义配置 写在最外层,不要写在任意节点下面 face: huaweihost: https://172.19.59.241...创建实体类 在项目的config文件夹下创建HuaweiVCMConfiguration类 // 这里根据你在配置类中最外层节点匹配查找`face` @ConfigurationProperties(prefix...读取参数 (main方法中是读不到的,必须以springboot的方式启动服务) @Autowired private HuaweiVCMConfiguration config; public void

1.8K21
  • data自定义属性在jQuery中的用法

    (1)如果在HTML文档中设置的data-自定义属性的单个字符串的名称的属性中若有大写值,在js文件中获取时只能用小写的形式获取。...如: HTML中data-Role,获取当时为$(node).data(“role”); (2)如果在HTML中设置data-role和data-Role是一样的,html属性不区分大小写。...然后我们从验证结果中可以看出,js只会找到第一个与其匹配就直接返回。 (3)如果用js来设置data属性,那么如果你定义的是大写的格式,则访问也必须是大写的形式。...最后讲一下data()和attr()的区别: (1) 是否需要传参: data() 可以不传入参数,这使获得的是一个js对象,就算你在html中没有设置任何data自定义属性时,获得的也是一个对象。...(4)data-attribute属性会在页面初始化的时候放到jQuery对象中,被缓存起来,而attr方法却不会。

    2.9K20

    quarkus实战之四:远程热部署

    答案是可以,接下来咱们一起实战如何远程调试quarkus应用 牢记来自官方的警告 如下图红框所示,来自官方的警告咱们一定要牢记在心,远程热部署功能有巨大安全隐患,不要用在生产环境: 在服务器上的运行方式...的作用是将指定配置的值注入修饰的成员变量中: package com.bolingcavalry; import org.eclipse.microprofile.config.inject.ConfigProperty...,增加以下三个配置,每个配置的作用请看注释: # 这是一个自定义属性,在业务代码中使用ConfigProperty注解取得其值 greeting.message=message from configuration...在服务器运行 接下来的操作是在服务器上进行的 首先确保服务器可以使用这个镜像(访问镜像仓库、或者用tar导入等) 执行以下命令启动镜像,注意环境变量QUARKUS_LAUNCH_DEVMODE是必须的.../hello-quarkus-jar:0.0.7 控制台输出如下图,应用成功启动,红框中显示已经进入热部署状态,随时可以接受远程调试同步过来的变化: 验证服务是否正常,我这里服务器IP地址是192.168.50.27

    59120

    quarkus实战之三:开发模式(Development mode)

    ,把代码改成下面这样,注意注解ConfigProperty的作用是将指定配置的值注入修饰的成员变量中: package com.bolingcavalry; import org.eclipse.microprofile.config.inject.ConfigProperty...,增加一个配置: # 这是一个自定义属性 greeting.message=message from configuration 用命令mvn quarkus:dev将应用以开发模式启动,用浏览器访问http...://localhost:8080/actions,响应如下图,符合预期,配置的属性可以被正常使用: 现在去修改代码,如下图红框: 再把文件application.properties中的配置也改了...,直接聊聊quarkus上如何操作吧 在开发模式下,断点功能是默认开启的,不过为了安全起见,quarkus断点只监听了localhost网卡,端口是5005 在代码中打个断点,如下图,我这里用的是IDEA...如下所示,新的IP+端口连接成功: 因为连接是基于IP+端口的,您完全可以在A电脑上运行应用,在B电脑上用IDEA远程连接A电脑进行断点操作 热部署的局限性 前面的操作:在A电脑用mvn quarkus

    87731

    quarkus实战之七:使用配置

    中greeting.message的值就会被quarkus框架注入到message成员变量中 配置项不存在导致的异常 如果ConfigProperty注解的配置项在配置文件中不存在,应用启动会报错,来看看是什么错误...optional info从文件application.properties中删除,重启应用,再次访问浏览器,如下图,应用依然正常响应,list中只有成员变量message的内容: 编码获取配置项 除了用...,在使用这些配置项的时候,只要注入StudentConfiguration实例即可 首先要用ConfigMapping指明配置项的前缀,该接口中的方法都对应具有此前缀的配置项 一般情况下,方法名就等于配置项的名称...:https://quarkus.io/guides/all-config 上述文档中,有很多配置项带有加锁的图标,如下图红框所示,有这个图标的配置项,其值在应用构建的时候已经固定了,在应用运行期间始终保持只读状态...其实还是有办法的,官方文档指明,如果业务的情况特殊,一定要变,就走热部署的途径,您可以参考《quarkus实战之四:远程热部署》 官方对开发者的建议:在开发quarkus应用的时候,不要使用quarkus

    1.2K30

    Quarkus集成nacos配置中心的框架扩展开源了(22)

    前言 博主的quarkus扩展开源系列三连发了,趁热打铁,今天继续带来集成nacos配置中心的扩展,也惙惙的准备开源了,你准备好了么 Quarkus技术交流QQ群:871808563 项目地址:https...的开关是关闭的状态,可以在quarkus的配置文件application.properties文件中,新增如上配置开启使用。...为了在不同环境使用不同的配置,quarkus.nacos.server-addr可以通过系统参数-Dnacos.serverAddr配置覆盖 quarkus配置使用方式 第一种、配置类方式 @ConfigProperties...return name; } public void setName(String name) { this.name = name; } } 这种方式可以方便的把同一类的配置归纳到一个类里...第二种、属性注入 @Singleton @Startup public class ConfigService { @ConfigProperty(name = "quarkus.app.name

    50650

    Spring框架中 Bean对象属性值的注入

    在Spring框架中,主要有两种常用的 Bean对象属性注入值方式: 1、set注入:是通过调用对象的setter方法为Bean对象属性赋值 2、构造注入:是通过Bean对象的构造函数为Bean对象属性注入值...注意:如果一个Bean对象同时存在set注入和构造注入两种方法,Spring在为Bean对象属性赋值时,会先使用set注入方式为属性赋值,再使用构造注入为Bean对象属性赋值。...在 Spring 中为 Bean 对象注入值分为三种类型: 1、直接量值的注入: Spring 直接量值的注入指的是通过Spring IOC为对象的8种基本类型封装类以及String类型的属性注入值。...id jdbcUser、jdbcPassword为配置文件等号左边的key 2、集合对象值的注入: 在spring中为集合对象注入值时,主要是通过使用配置文件中的标签对属性值进行封装,spring在创建对象时会根据对应的标签生成相对应的对象...,来进行属性值的注入 public class Configuration { private List list; private Map map

    4.1K10

    Quarkus集成Dubbo Rpc远程通讯框架(8)

    nacos注册中心的依赖,注意可以排除spring的那些依赖,在quarkus环境中,spring的包一点用都没有,只会增加应用的体积 定义接口和实现 public interface TestService...中的dubbo配置,这里只定义了基本的配置属性,其他都可以使用默认值,更多的配置属性看需求可以在这里新增,上面的代码为了博文的篇幅考虑简化了get和set代码。...quarkus.dubbo.protocol.name = dubbo quarkus.dubbo.protocol.port = 20330 应用启动时,创建DubboProperties实例,并将配置文件中的相关配置设置到对应的属性中...因为没有spring自动扫描dubbo注解获取bean实例,所以在quarkus中,需要手动声明和注册dubbo服务,这里通过@PostConstruct应用启动后的构造函数来触发dubbo的服务注册暴露动作...和dubbo的集成后,博主看到了quarkus在这边落地的希望,虽然最终的目标是面向容器编程,但是在全部迁移上容器的过程中,肯定还需要兼容dubbo这种远程通讯方式的,相比于spring中的dubbo使用

    31330

    如何借助 Quarkus 和 MicroProfile 实现微服务

    回弹性(Resiliency):在微服务架构中,我们在开发时应该要考虑到故障,特别是与其他服务进行通信的时候。在单体架构中,应用会作为一个整体进行启动和关闭。...它是一个开源的系统,用来自动化、编排、扩展和管理容器。 但是在我们提到的十个微服务特性中,通过使用 Kubernetes 只能覆盖其中的三个。...最后需要配置的就是服务的位置(hostname 部分)。在 Quarkus 中,配置属性是在src/main/resources/application.properties文件中设置的。...在这里,我们实现一个自定义的指标来衡量评分最高的图书。...book_rating_test_seconds_max gaugebook_rating_test_seconds_max 1.018622001 Micrometer 使用MeterFilter实例来自定义由

    1.9K50

    探索Spring中的属性注入:@Value注解解析与应用

    探索Spring中的属性注入:@Value注解解析与应用 摘要 作为一名技术博主,我深知在开发过程中,对于属性的注入是至关重要的一部分。...在Spring框架中,@Value注解为我们提供了一种简洁灵活的方式来进行属性注入。...本文将深入探讨@Value注解的使用方法及其在实际开发中的应用,帮助读者更好地掌握Spring框架中的属性注入技术。...引言 在开发过程中,我们经常需要从外部配置文件或其他来源中获取属性值,并注入到我们的应用程序中。Spring框架提供了多种属性注入的方式,其中@Value注解是一种常用且灵活的方式。...属性注入优先级问题对@Value属性注入的扩展 在Spring中,属性注入存在优先级问题,即当属性同时被多种方式注入时,Spring容器会根据一定的规则确定最终的属性值。

    10010

    【实战技巧】CSS自定义属性以及在VUE3中的使用

    ---- 什么是css自定义属性 官方称之为 自定义属性 ,但我比较习惯叫它 变量 ,简单点说就是一种开发者可以自主命名和使用的 CSS 属性. CSS变量和预处理器中的变量有什么不同?...CSS变量是浏览器中直接可用的CSS属性,而预处理中的变量是用于编译成常规的CSS代码,浏览器其实对它们一无所知。...我们可以在 样式表中 ,在 内联样式 中,在 SVG的标签 中直接使用CSS变量,甚至可以在 运行时 用JavaScript直接修改它。但是我们是 无法 对预处理器中的变量做上面这些操作的....当然,可以同时使用CSS变量和预处理变量,他们是不冲突的. CSS变量:语法 变量的声明 css变量的定义由--开头,这样浏览器能够区分 自定义属性 和 原生属性 ,从而将它俩分开处理。...VUE3.0中,可以在CSS中使用 响应式变量, 通过下图可以看出,它的原理就是运用了CSS自定义属性 我们先在HelloWorld.vue中写入下方代码,我们使用定时器两秒以后修改color的值,

    2.7K20

    《Quarkus实战》总结

    =jks quarkus.http.ssl.certificate.key-store-password=changeit 四、配置 在application.properties文件中定义 @ConfigProperty...(name = "quarkus.mailer.from") String from; 1)以程序化的方式访问配置属性 注入org.eclipse.microprofile.config.Config来程序化地获取属性值...类 5)依赖注入 使用@Inject ---- 6)创建工厂类 使用javax.enterise.inject.Produces允许创建任何类型的对象,等同于Spring中@Bean 使用@io.quarkus.arc.DefaultBean...使用producer中的InjectionPoint和限定符注解上的非绑定属性的组合,可以同时限定和配置一个bean。...启动前调用start方法 ❷在HelloResourceTest运行前调用inject方法 ❸在所有测试执行完毕后调用stop方法 六、打包Quarkus应用程序 在JVM中运行应用程序 mvn clean

    2.4K10

    支持JDK19虚拟线程的web框架,上篇:体验

    (来自Project Loom)这一特性也闪亮登场,虚拟线程是 JDK 而并非OS 实现的轻量级线程(Lightweight Process,LWP),许多虚拟线程共享同一操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量...quarkus/application.properties 检查application.properties文件的可读性,执行以下命令设置 sudo chmod a+r application.properties...执行以下命令即可部署和启动quarkus应用,注意application.properties文件的位置要换成您自己的配置文件路径 docker run -idt \ --name quarkus \...\ bolingcavalry/quarkus-virual-threads-demo:x64-0.0.3 上述命令中,quarkus应用的镜像bolingcavalry/quarkus-virual-threads-demo...,SpringBoot的平均等待时间略高,QPS略低 至此,咱们通过实际对比的方式,已体验过quarkus使用虚拟线程的web服务,同在quarkus框架中,虚拟线程带来的提升并不明显,在对比未做优化的

    1.2K30

    quarkus数据库篇之四:本地缓存

    这个git项目中有多个文件夹,本次实战的源码在quarkus-tutorials文件夹下,如下图红框 quarkus-tutorials是个父工程,里面有多个module,本篇实战的module...Country.java,这里有一处要注意的地方,就是在我们的设计中,city和country表并不是通过字段关联的,而是一个额外的表记录了他们之间的关系,因此,成员变量citys并不对应country...,来自quarkus的默认规则,如果您想用city或者country的某个字段来建立两表的关联,请参考javax.persistence.OneToMany源码的注释,里面有详细说明 package com.bolingcavalry.db.entity...,填入Country对象的cities成员变量中 所以,是不是只要给实体类Country增加缓存注解,在查询Country的时候,其关联的City对象也会走本地缓存呢?...表,那么basic-cache中的缓存就不会失效(因为没人告诉它),这样从basic-cache中读取的数据因为是本地缓存,所以还是更新前的数据 至此,quarkus数据库本地缓存的现有方案,咱们已全部完成了

    68420

    依赖注入在多模块工程中的应用

    在任何需要注入的地方,我们都需要在合适的时机调用底层函数,大多数情况下不是在对象初始化时就是在 onCreate 方法中。...依赖注入的简要介绍 依赖注入基本上意味着你不用在你需要的地方创建它们,而是在别的地方创建。然后这些对象的引用可以被传递到需要使用它们的类中。...这也允许我们在整个代码库中逐步推出更改,与此同时每个人的任务也可持续进行。 在 Plaid 应用内我们使用已验证后的 about 功能模块作为 Dagger 的练习模块。...依赖图解 当为一个单块应用引入依赖注入库时,通常整个应用有个单一的依赖图。 这可以使组件间共享依赖。在一些库中,依赖可以被设置作用域来避免冲突,或者为被注入对象提供一种特殊的实现。...你可以深入到代码中来查看我们如何使用 Dagger 解决 Plaid 中的依赖注入问题。

    1.8K10

    quarkus依赖注入之四:选择注入bean的高级手段

    ,在应用中,一个接口有多个实现是很常见的,那么依赖注入时,如果类型是接口,如何准确选择实现呢?...容器中的每一个bean都应该有一个Qualifier修饰符在修饰,如下图红框,如果没有,就会被quarkus添加Default注解 依赖注入时,直接用Qualifier修饰符修饰注入对象,这样quarkus...,在注入位置也用@Named(“A”)来修饰,和bean定义处的一模一样 如此,bean定义和bean注入的两个地方,通过Named注解的属性完成了匹配,至于单元测试您可以自行验证,这里就不赘述了...,其核心是用Alternative和Priority两个注解修饰所有备选bean,然后用Priority的属性值(int型)作为优先级,该值越大代表优先级越高 在注入位置,quarkus会选择优先级最高的...在注入bean的位置,如果用Instance来接收注入,就可以拿到T类型的所有bean,然后在代码中随心所欲的使用这些bean 新增演示用的接口HelloInstance.java package

    88850

    quarkus依赖注入之一:创建bean

    ,本文先介绍CDI,再学习如何创建bean实例,全文内容如下 image.png 学习quarkus的依赖注入之前,来自官方的提醒非常重要 官方提醒 在使用依赖注入的时候,quankus官方建议不要使用私有变量...bean实例创建开始 创建bean实例:注解修饰在类上 先来看看spring是如何创建bean实例的,回顾文章刚开始的那段代码,myComponent对象来自哪里?...继续看spring官方的demo,如下所示,用Component注解修饰在类上,spring就会实例化MyComponent对象并注册在bean容器中,需要用此bean的时候用Autowired注解就可以注入了...HelloService实现类中选择一个),没错,在SpringBoot的Configuration类中咱们也是这样做的 前面的getHelloService方法的返回值,可以直接在业务代码中依赖注入,...官方称之为synthetic bean(合成bean),这种bean只会在扩展组件中用到,而咱们日常的应用开发不会涉及,synthetic bean的特点是其属性值并不来自它的类、方法、成员变量的处理,

    1.1K50
    领券