【SpringBoot】使用spring-boot-actuator监控项目及使用spring-boot-autoconfigure自动装配


参考 在传统Spring应用中使用spring-boot-actuator模块提供监控端点
参考 springMVC中增加spring-boot-actuator

一、build.gradle

dependencies {
    //compile 编译范围依赖在所有的 classpath 中可用,同时它们也会被打包
    compile (
		//自动依赖spring-boot、spring-boot-autoconfigure
        "org.springframework.boot:spring-boot-actuator:$springBootVersion",
        "org.hibernate:hibernate-validator:$hibernateVersion",
    )
}

分析发现确实会自动依赖
在这里插入图片描述

二、MyWebMvcConfigurer.java

[MyWebMvcConfigurer.java]

/**
 * @description: 自定义web配置类
 */
@Configuration
//开启自动配置
@EnableAutoConfiguration
//注释提供了一种方便的声明性机制,用于将PropertySource添加到Spring的Environment。需要与@Configuration类一起使用。
@PropertySource("classpath:/cfg.properties")
public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {

}

[ActuatorSpringConfig.java]

/**
 * 若开启了{@link EnableAutoConfiguration},且jar中有actuator相关的AutoConfiguration类,就不需要手动配置了
 */
//@Configuration
public class ActuatorSpringConfig {
    @Bean
    public EndpointHandlerMapping endpointHandlerMapping(Collection<? extends MvcEndpoint> endpoints) {
        return new EndpointHandlerMapping(endpoints);
    }

    @Bean
    public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
        return new HealthMvcEndpoint(delegate);
    }

    @Bean
    public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }

    @Bean
    public EndpointMvcAdapter infoEndPoint(InfoEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }

    @Bean
    public EndpointMvcAdapter traceEndPoint(TraceEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }

    @Bean
    public EndpointMvcAdapter dumpEndpoint() {
        return new EndpointMvcAdapter(new DumpEndpoint());
    }

    @Bean
    public EndpointMvcAdapter environmentEndpoint(StandardServletEnvironment environment) {
        EnvironmentEndpoint environmentEndpoint = new EnvironmentEndpoint();
        environmentEndpoint.setEnvironment(environment);
        return new EndpointMvcAdapter(environmentEndpoint);
    }

    @Bean
    public EndpointMvcAdapter beansEndpoint(ApplicationContext context) {
        BeansEndpoint endpoint = new BeansEndpoint();
        endpoint.setApplicationContext(context);
        return new EndpointMvcAdapter(endpoint);
    }

    @Bean
    public EndpointMvcAdapter requestMappingEndpoint(ApplicationContext context) {
        RequestMappingEndpoint requestMappingEndpoint = new RequestMappingEndpoint();
        requestMappingEndpoint.setApplicationContext(context);
        return new EndpointMvcAdapter(requestMappingEndpoint);
    }

    @Bean
    public EndpointMvcAdapter shutdownEndpoint(ApplicationContext context) {
        ShutdownEndpoint shutdownEndpoint = new ShutdownEndpoint();
        shutdownEndpoint.setApplicationContext(context);
        shutdownEndpoint.setEnabled(true);
        return new EndpointMvcAdapter(shutdownEndpoint);
    }
}

三、spring.xml

<context:component-scan base-package="com.hd" >
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
		<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
		<context:exclude-filter type="annotation" expression="springfox.documentation.swagger2.annotations.EnableSwagger2"/>
		<context:exclude-filter type="annotation" expression="org.springframework.boot.autoconfigure.EnableAutoConfiguration"/>
	</context:component-scan>

四、mvc.xml

<context:component-scan base-package="com.hd" use-default-filters="false">
		<!-- base-package 如果多个,用“,”分隔 -->
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
		<context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
		<context:include-filter type="annotation" expression="springfox.documentation.swagger2.annotations.EnableSwagger2"/>
		<context:include-filter type="annotation" expression="org.springframework.boot.autoconfigure.EnableAutoConfiguration"/>
	</context:component-scan>

传统Spring项目存在父子容器,本案例是把自动配置功能放在mvc容器中。

五、启动

[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.867] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/health],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(java.security.Principal)
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.868] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/shutdown],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.ShutdownMvcEndpoint.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.869] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/mappings],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.869] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/info],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.870] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/metrics/{name:.*}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.870] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/metrics],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.870] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/beans],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.871] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/autoconfig],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.871] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/dump],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.871] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/trace],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.872] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/configprops],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.872] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/env/{name:.*}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)
[RMI TCP Connection(3)-127.0.0.1 2021-02-27 23:44:42.873] [INFO ] AbstractHandlerMethodMapping.registerHandlerMethod:220 Mapped "{[/env],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

通过swagger-ui也能看到各种监控端点的访问路径:
在这里插入图片描述

六、使用配置文件

因为在 MyWebMvcConfigurer 类中使用 @PropertySource 指定了配置文件为cfg.properties,所以可以通过该配置文件对actuator进行一些设置。

# 关闭所有endpoint
endpoints.enabled=false
# 关闭指定的endpoint
endpoints.trace.enabled=false
#关闭数据库健康检查
management.health.db.enabled=false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值