spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(一)

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

SpringBootMonitor

spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(一)

spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(二)

spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(三)

1.spring-boot-admin简介

spring-boot-admin为springboot提供一套可视化监控页面,spring-boot-admin可以方便监控集群各节点的使用及访问情况。单机使用spring-boot-admin,需要同时引入spring-boot-admin-server和spring-boot-admin-client。

2.spring-boot-monitor

了解了spring-boot-admin之后,我们可以仿照spring-boot-admin写一个简单的单机监控工具,不需要既用server又用client。

3.程序入口

spring-boot-admin通过注解@EnableAdminServer启用spring-boot-admin的相关功能,@EnableAdminServer是程序唯一入口,它的源码是这样的:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Import(AdminServerImportSelector.class)
    public @interface EnableAdminServer {

    }

重点是@Import(AdminServerImportSelector.class),使用@Import注解可以引入三种类

a.使用了@Configuration注解的类

这个比较简单,如果明确知道需要引入哪个配置类,直接引入就可以。

b.ImportSelector的子类

如果并不确定引入哪个配置类,需要根据@Import注解所标识的类或者另一个注解(通常是注解)里的定义信息选择配置类的话,用这种方式。

c.注解@EnableTransactionManagement

参考:http://weiqingfei.iteye.com/blog/2361152

4. ImportSelector

AdminServerImportSelector实现了DeferredImportSelector,DeferredImportSelector继承ImportSelector,SpringBoot里的ImportSelector是通过SpringBoot提供的

@EnableAutoConfiguration这个注解里完成的。这个@EnableAutoConfiguration注解可以显式地调用,否则它会在

@SpringBootApplication注解中隐式地被调用。AdminServerImportSelector实现了selectImports方法,引入了NotifierConfiguration、

HazelcastStoreConfiguration、AdminServerCoreConfiguration、AdminServerWebConfiguration、DiscoveryClientConfiguration、

RevereseZuulProxyConfiguration。这些类都有@Configuration注解。

而监控页面的配置,主要是AdminServerCoreConfiguration和AdminServerWebConfiguration这两个类完成配置的。

至此,我们可以仿照实现自己的注解:

注解:

    package com.cff.boot.monitor.config;

    import java.lang.annotation.Documented;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    import java.lang.annotation.ElementType;
    import org.springframework.context.annotation.Import;

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Import(MonitorConfigImportSelector.class)
    public @interface EnableMonitorServer {

    }

    }

ImportSelector:

    package com.cff.boot.monitor.config;

    import org.springframework.context.annotation.DeferredImportSelector;
    import org.springframework.core.type.AnnotationMetadata;

    public class MonitorConfigImportSelector implements DeferredImportSelector {

        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[] { MonitorConfiguration.class.getCanonicalName(),
                    MonitorWebConfiguration.class.getCanonicalName()};
        }

    }

项目git地址:

https://gitee.com/ffch/SpringBootMonitor


来源:http://ddrv.cn

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(一)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏