0


Spring Boot Admin2 @EnableAdminServer的加载

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

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

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.5.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

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

@Configuration@EnableAutoConfiguration@EnableAdminServerpublicclassSpringBootAdminApplication{publicstaticvoidmain(String[] args){SpringApplication.run(SpringBootAdminApplication.class, args);}}

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

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

@EnableAdminServer

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

EnableAdminServer

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AdminServerMarkerConfiguration.class)public@interfaceEnableAdminServer{}

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

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

AdminServerMarkerConfiguration

@Configuration(proxyBeanMethods =false)publicclassAdminServerMarkerConfiguration{@BeanpublicMarkeradminServerMarker(){returnnewMarker();}publicstaticclassMarker{}}

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

更进一步的,看下这个Marker Bean 用在了哪些地方。
在这里插入图片描述
可见

AdminServerUiAutoConfiguration

AdminServerAutoConfiguration

都通过

@ConditionalOnBean

判断了Spring 中是否存在Marker Bean。

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

另外用

@Import(AdminServerMarkerConfiguration.class)

代替

@EnableAdminServer

注解,SBA2也是能正常使用的,因为@EnableAdminServer也就是用来导入AdminServerMarkerConfiguration,只有这一个作用。

标签: spring boot java spring

本文转载自: https://blog.csdn.net/weixin_40972073/article/details/127986764
版权归原作者 阿提说说 所有, 如有侵权,请联系我们删除。

“Spring Boot Admin2 @EnableAdminServer的加载”的评论:

还没有评论