【问题标题】:JavaMelody and SpringJavaMelody 和 Spring
【发布时间】:2026-01-06 15:10:02
【问题描述】:

我已经使用提供的 STS 指南设置了休息服务:http://spring.io/guides/gs/rest-service/

我正处于开发的初期,但我想确保我有合适的工具来衡量性能。

我感兴趣的关键绩效指标是:

  • HTTP 请求计数器
  • 可配置时间段内的 HTTP 请求速率
  • HTTP 平均延迟
  • 还有更多

最后,我很想在这里收集统计数据:http://ruleoftech.com/2013/monitoring-java-ee-application-with-javamelody

我找不到任何描述执行此类操作所涉及步骤的文档。 JavaMelody 文档位于:https://code.google.com/p/javamelody/wiki/UserGuide 讨论了在 WEB-INF/lib 中复制相关 jar,但 AFAIK 在 Spring 中或至少在我使用它的方式上没有等效项。我不是 Spring 方面的专家。

我正在寻求有关如何设置的帮助。

提前致谢。

【问题讨论】:

    标签: java spring java-melody


    【解决方案1】:

    在你的 pom.xml 中添加 java melody 依赖:

    <!-- javamelody-core -->
        <dependency>
            <groupId>net.bull.javamelody</groupId>
            <artifactId>javamelody-core</artifactId>
            <version>1.54.0</version>
        </dependency>
    

    将监控 spring 上下文添加到您的 Application 类:

    @ComponentScan
    @EnableAutoConfiguration
    @ImportResource("classpath:net/bull/javamelody/monitoring-spring.xml")
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    使用“@MonitoredWithSpring”Java melody注解来监控你的spring对象:

    @RestController
    @MonitoredWithSpring
    public class GreetingController {
    
        private static final String template = "Hello, %s!";
        private final AtomicLong counter = new AtomicLong();
    
    
        @RequestMapping("/greeting")
        public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
            return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
            }
        }
    

    【讨论】:

    • 我们如何在基于 xml 的配置上做到这一点?
    【解决方案2】:

    您不知道您是如何“使用”Spring 的,但我快速查看了用于休息服务的 STS 指南,它使用 Gradle 或 Maven 管理依赖项(jar)并为两者提供示例。技术规则示例使用 Maven (as shown in JavaMelody docs) 获取 JavaMelody jars(到 WEB-INF/lib),因此您可以按照文章为您的应用程序配置 JavaMelody 统计信息。

    【讨论】:

      【解决方案3】:

      现在有一个javamelody spring-boot-starter,它是 spring-boot 2 的更简单的解决方案。

      在你的 pom.xml 中添加 javamelody spring-boot-starter 依赖:

          <dependency>
              <groupId>net.bull.javamelody</groupId>
              <artifactId>javamelody-spring-boot-starter</artifactId>
              <version>1.76.0</version>
          </dependency>
      

      你就完成了(不需要导入monitoring-spring.xml资源,也不需要给控制器添加注解)。

      对于 spring-boot 1 或查看最新版本,请参阅doc

      【讨论】: