• Spring Boot Admin2 @EnableAdminServer的加载


    其他相关文章:
    1、Spring Boot Admin 参考指南
    2、SpringBoot Admin服务离线、不显示健康信息的问题

    首先根据官网的“快速开始”,快速搭建一个Spring Boot Admin Server项目
    1、添加Spring Boot Admin启动器到依赖
    pom.xml

    <dependency>
        <groupId>de.codecentricgroupId>
        <artifactId>spring-boot-admin-starter-serverartifactId>
        <version>2.5.1version>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2、通过添加@EnableAdminServer配置引入Spring Boot Admin Server配置

    @Configuration
    @EnableAutoConfiguration
    @EnableAdminServer
    public class SpringBootAdminApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringBootAdminApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    启动该Spring Boot项目,打开项目地址就能访问到Spring Boot Admin2(后面简称SBA2)的监控页面
    在这里插入图片描述

    🚩 这里我已经注册了两个实例到SBA2

    @EnableAdminServer

    当我们注释掉这个注解后,项目能启动,但是监控页面是404。下面来看下@EnableAdminServer是如何加载的。

    EnableAdminServer

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Import(AdminServerMarkerConfiguration.class)
    public @interface EnableAdminServer {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    @Import 注解用于导入指定的类到Spring 容器中

    一般我们认为既然有注解表示AdminServer,那肯定有处理该注解的地方,但当你搜索SBA2的源码后,没有发现处理的地方。实际该注解只是用来导入AdminServerMarkerConfiguration类。

    AdminServerMarkerConfiguration

    @Configuration(proxyBeanMethods = false)
    public class AdminServerMarkerConfiguration {
    
    	@Bean
    	public Marker adminServerMarker() {
    		return new Marker();
    	}
    
    	public static class Marker {
    
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    该类是一个配置类,没有任何具体逻辑,只是用来生成一个Marker Bean。由此可知,SBA2就是靠这个Bean来判断是否标注为 Admin Server。

    更进一步的,看下这个Marker Bean 用在了哪些地方。
    在这里插入图片描述
    可见AdminServerUiAutoConfigurationAdminServerAutoConfiguration都通过@ConditionalOnBean 判断了Spring 中是否存在Marker Bean。

    由此如果你去掉@EnableAdminServer注解,那监控页面肯定是打不开的。

    另外用@Import(AdminServerMarkerConfiguration.class) 代替 @EnableAdminServer 注解,SBA2也是能正常使用的,因为@EnableAdminServer也就是用来导入AdminServerMarkerConfiguration,只有这一个作用。

  • 相关阅读:
    redis(2)-hiredis-centos-ubuntu 下安装和使用
    缺口的大利润!伦敦银如何使用缺口交易
    万界星空科技低代码平台+协同制造MES产品
    操作系统知识点
    Stream流处理快速上手最佳实践 | 京东物流技术团队
    Android实现在activity启动时传递对象和字符串参数
    Linux常用操作集合(三)
    网络安全之XSS漏洞
    2021年软件测试面试题大全
    mysql的配置文件(my.ini或者 my.cnf)所在位置
  • 原文地址:https://blog.csdn.net/weixin_40972073/article/details/127986764