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

通过.properties文件进行spring配置的度量

慕胡媚
2023-03-14

我正在尝试通过配置文件配置指标Spring

在我的Spring。我添加的xml

<bean id="propertyPlaceholderConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>
                classpath:metrics.properties
            </value>
        </list>
    </property>
    <property name="systemPropertiesModeName"
              value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="searchSystemEnvironment" value="true"/>
</bean>

充满了像这样的东西

metrics.reporter.type=console

然后我在Spring配置中设置它,通过${metrics.reporter.type}访问该属性

<metrics:reporter metric-registry="metrics" type="${metrics.reporter.type}" period="1m"/>

在Web应用程序启动过程中,Spring由于上面的未解析变量而抛出BeanDevelopitionParsingException

配置问题:未找到报告类型${metrics.reporter.type}的ReporterElementParser

我正在为mongo主机和端口使用这种配置方法(通过属性文件),它非常有效。

我在Tomcat7,Spring4.0.5.RELEASE,指标框架3.1.0-SNAPSHOT(我需要泽西2支持)和指标 - Spring3.0.1中运行。我还尝试了一个自我编译的指标 - Spring3.1.0 - SNAPSHOT,但没有解决我的问题。

[编辑]

发现了这个问题,解释了ElementParser不支持SpEL。

共有1个答案

狄易安
2023-03-14

恐怕无法在类型属性中使用属性占位符。Spring不会解析属性占位符或SpEL,直到metrics之后的阶段Spring读取类型属性并解析报告器元素(这是允许在所有其他属性中使用占位符和bean引用所必需的)。

一种可能的解决方案是配置您可能要使用的所有报告器,并在 enabled 属性中使用占位符:

<metrics:reporter metric-registry="metrics" type="console" period="1m"
                  enabled="${metrics.reporter.console.enabled}" />

<metrics:reporter metric-registry="metrics" type="slf4j" period="1m"
                  enabled="${metrics.reporter.slf4j.enabled}" />

和属性文件:

metrics.reporter.console.enabled=true
metrics.reporter.slf4j.enabled=false

我希望这是有意义的,我已经度过了漫长的一周!

 类似资料:
  • 本文向大家介绍详解利用Spring加载Properties配置文件,包括了详解利用Spring加载Properties配置文件的使用技巧和注意事项,需要的朋友参考一下 记得之前写Web项目的时候配置文件的读取都是用Properties这个类完成的,当时为了项目的代码的统一也就没做什么改动。但事后一直在琢磨SpringMVC会不会都配置的注解功能了?经过最近的研究返现SpringMVC确实带有这一项

  • 我正在尝试使用maven配置文件实例化hibernate配置文件。我的配置文件位于下,在pom文件中,我标记了该文件夹以用于资源过滤。有趣的是,我可以从属性文件中加载相同的属性,而hibernate在解析配置文件时抛出异常。这是我正在使用的代码示例。 POM-资源筛选 文件结构 资源hibernate.cfg.xml

  • 我有一个与Kafka通信的Spring启动应用程序。 我通过注入环境变量在生产中配置这个应用程序。 对于kafka,我可以使用环境变量配置大多数内容—引导服务器、ssl信任库位置、ssl信任库密码、组id、主题,例如: 因为我可以使用环境变量配置ssl密钥库和密码,所以我假设我可以配置ssl协议和安全协议;如: 但是,我会错误地假设,因为当我把它设置在那里时,会出现一条消息: 更多信息出现! 这让

  • 问题内容: 为了使log4j正常运行,我必须设置/传递哪些变量作为JVM的参数?正确地说,我的意思是不要抱怨并打印到控制台。我可以看一个典型的例子吗? 注意:我需要避免在应用程序中创建log4j.properties文件。 问题答案: 您是否有一个log4j配置文件?只需使用 {文件路径}的前缀 编辑: 如果您正在使用log4j2,则需要使用

  • 本文向大家介绍java读取properties配置文件的方法,包括了java读取properties配置文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java读取properties配置文件的方法。分享给大家供大家参考。具体分析如下: 这两天做java项目,用到属性文件,到网上查资料,好半天也没有找到一个满意的方法能让我读取到.properties文件中属性值,很是郁闷,网上讲

  • 每当我通过命令行和mvn包运行应用程序时,IntelliJ 2016.1.2中都有一个小型Spring boot应用程序版本1.3.3 我记得我前段时间搜索过这个问题,它是IDE中一个已知的错误,也出现在Eclipse中。但是我找不到这些帖子了,因此无法访问解决方案。 你们谁能帮忙吗? 提前感谢。问候