在我的 Spring MVC 应用程序中实现 Spring Actuator 而不添加 Spring Boot

Posted

技术标签:

【中文标题】在我的 Spring MVC 应用程序中实现 Spring Actuator 而不添加 Spring Boot【英文标题】:Implement Spring Actuator in my Spring MVC app without adding Spring boot 【发布时间】:2019-03-31 06:14:28 【问题描述】:

目前我有一个使用 Spring MVC 的遗留项目。现在需要实现 Spring boot 执行器。所以我的问题是

    我可以在我的 Spring MVC 应用程序中实现 Spring Actuator 而不添加 弹簧靴 我可以同时拥有 Spring Boot 和 Spring MVC 吗? 应用。如果是,那么如何。

如果有人可以描述它的逐步实现,那就太好了。 我正在使用 Eclipse、Gradle、Tomcat

【问题讨论】:

【参考方案1】:

回答您的第一个问题:

    是的,您可以在 spring mvc 项目中使用执行器。将此添加到 pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-actuator</artifactId>
        <version>Compatible version with mvc</version>
    </dependency>
    

    在下方添加配置

    @Configuration
    @EnableWebMvc
    @Import(EndpointAutoConfiguration.class , PublicMetricsAutoConfiguration.class , HealthIndicatorAutoConfiguration.class
    )
    public class MyActuatorConfig 
    
        @Bean
        @Autowired
        public EndpointHandlerMapping endpointHandlerMapping(Collection<? extends MvcEndpoint> endpoints) 
          return new EndpointHandlerMapping(endpoints);
        
    
       @Bean
       @Autowired
       public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) 
          return new EndpointMvcAdapter(delegate);
      
    
    

2。回答你的第二个问题

当然你可以使用Spring bootspring MVC,只是简单地把下面作为父级来管理所有依赖版本等。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

spring-boot-starter-web 作为依赖项。

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

【讨论】:

对于第一个答案步骤 2 - 您能在此处提及 spring servlet 中的条目吗?即要传递哪些值以使自动装配正常工作 配置后 /actuator 端点应该可用并且对于指标 /metrics 相同 但是如何配置呢?即我不明白第 2 步。你能详细描述一下吗?因为它有 @Autowired 注释,我们应该在哪里注入这些依赖项以及如何注入?我被困在那一点上。提前致谢 创建此配置类后,您将可以访问执行器端点,您可以通过它们的端点调用该端点以获取有关指标等的信息,如果您想自定义信息默认结束品脱返回,那么请查看执行器文档,例如 EndpointHandlerMapping 是否可用作 bean。这足以配置执行器。 类 EndpointAutoConfiguration、PublicMetricsAutoConfiguration、HealthIndicatorAutoConfiguration 仅通过 spring-boot-actuator 依赖没有得到解决。我认为它需要弹簧靴

以上是关于在我的 Spring MVC 应用程序中实现 Spring Actuator 而不添加 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 Web MVC 应用程序中实现访问控制列表?

如何在我的 ASP.NET MVC 应用程序中实现“全选”复选框?

在 ASP.NET MVC 中实现“记住我”功能

如何在 Spring MVC 应用程序中实现 Spring 安全性?

在 ASP.NET MVC 中实现配置文件提供程序

Spring MVC 3.0 基本认证实现