其他相关文章:
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
@EnableAdminServer
public class SpringBootAdminApplication {
public static void main(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 @interface EnableAdminServer {
}
@Import 注解用于导入指定的类到Spring 容器中
一般我们认为既然有注解表示AdminServer,那肯定有处理该注解的地方,但当你搜索SBA2的源码后,没有发现处理的地方。实际该注解只是用来导入AdminServerMarkerConfiguration类。
AdminServerMarkerConfiguration
@Configuration(proxyBeanMethods = false)
public class AdminServerMarkerConfiguration {
@Bean
public Marker adminServerMarker() {
return new Marker();
}
public static class Marker {
}
}
该类是一个配置类,没有任何具体逻辑,只是用来生成一个Marker Bean。由此可知,SBA2就是靠这个Bean来判断是否标注为 Admin Server。
更进一步的,看下这个Marker Bean 用在了哪些地方。
可见AdminServerUiAutoConfiguration
、AdminServerAutoConfiguration
都通过@ConditionalOnBean
判断了Spring 中是否存在Marker Bean。
由此如果你去掉@EnableAdminServer注解,那监控页面肯定是打不开的。
另外用@Import(AdminServerMarkerConfiguration.class)
代替 @EnableAdminServer
注解,SBA2也是能正常使用的,因为@EnableAdminServer也就是用来导入AdminServerMarkerConfiguration,只有这一个作用。