当前位置:首页 > 科技  > 软件

管理SpringBoot项目的三个强大的功能是否用过?

来源: 责编: 时间:2024-07-02 17:36:43 195观看
导读环境:SpringBoot2.7.181. 管理功能Admin Features通过指定spring.application.admin.enabled属性,可以为应用程序启用管理员相关的功能。这在平台MBeanServer上公开了SpringApplicationAdminMXBean。你可以使用这个特性

环境:SpringBoot2.7.18jYT28资讯网——每日最新资讯28at.com

1. 管理功能Admin Features

通过指定spring.application.admin.enabled属性,可以为应用程序启用管理员相关的功能。这在平台MBeanServer上公开了SpringApplicationAdminMXBean。你可以使用这个特性远程管理Spring Boot应用程序。jYT28资讯网——每日最新资讯28at.com

spring:  application:    admin:      enabled: true

开启管理功能后,你可以通过JConsole查看MBean对当前的SpringBoot程序进行简单的管理及查看。默认JMX的名称为:org.springframework.boot:type=Admin,name=SpringApplicationjYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

在操作菜单中,我们可以通过shutdown关闭应用程序,可以通过getProperty获取应用中的配置属性信息。jYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

获取属性信息:jYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

自定义JMX名称:jYT28资讯网——每日最新资讯28at.com

spring:  application:    admin:      enabled: true      jmx-name: com.pack:type=AKF,name=PackAPP

注意:这里jmx-name格式:xxx:type=yyy,name=zzzjYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

2. 应用退出

每个SpringApplication都向JVM注册一个关闭挂钩,以确保ApplicationContext在退出时正常关闭。所有标准的Spring生命周期回调(如DisposableBean接口或@PreDestroy注释)都可以使用。jYT28资讯网——每日最新资讯28at.com

2.1 自定义退出码

@Component@Order(-2)public class PackExitCodeGenerator implements ExitCodeGenerator {  @Override  public int getExitCode() {    System.out.println("PackExitCodeGenerator exit code 6...") ;    return 6 ;  }}

你可以定义多个实现了ExitCodeGenerator的类,通过@Order定义顺序,而SpringBoot只会返回第一个非零的退出码。jYT28资讯网——每日最新资讯28at.com

SpringBoot的退出操作是调用当前容器ConfigurableApplicationContext#close方法。所以当前容器中所有实现了DisposableBean或使用了@PreDestory注解他们对应的回调方法都执行。jYT28资讯网——每日最新资讯28at.com

2.2 自定义DisposableBean

@Componentpublic class AppComponent implements DisposableBean {  @Override  public void destroy() throws Exception {    System.out.println("Bean生命周期结束...") ;  }}

2.3 定义exit接口

@Resourceprivate ConfigurableApplicationContext context ;@GetMapping("")public Object exit() {  SpringApplication.exit(context) ;  return "exit" ;}

2.4 测试

调用上的接口后,你将在控制台看到如下输出jYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

在关闭应用程序之前SpringBoot会发布ExitCodeEvent事件jYT28资讯网——每日最新资讯28at.com

@Componentpublic class PackAppExitListener implements ApplicationListener<ExitCodeEvent> {  @Override  public void onApplicationEvent(ExitCodeEvent event) {    System.out.printf("监听到应用退出事件,退出码:%d%n", event.getExitCode()) ;  }}

结果输出:jYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

3. 应用启动跟踪

在应用程序启动期间,SpringApplication和ApplicationContext执行许多与应用程序生命周期、bean生命周期甚至处理应用程序事件相关的任务。有了ApplicationStartup, Spring框架允许你用StartupStep对象跟踪应用程序的启动顺序。收集这些数据可以用于分析,或者只是为了更好地了解应用程序启动过程。jYT28资讯网——每日最新资讯28at.com

你可以在设置SpringApplication实例时选择ApplicationStartup实现。例如,要使用BufferingApplicationStartup,如下示例:jYT28资讯网——每日最新资讯28at.com

SpringApplication application = new SpringApplication(SpringbootComprehensiveApplication.class) ;application.setApplicationStartup(new BufferingApplicationStartup(2048)) ;application.run(args) ;

接下来需要通过可以通过Actuator暴露的端口,以JSON的形式查看信息。引入依赖jYT28资讯网——每日最新资讯28at.com

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-actuator</artifactId></dependency>

通过/startup接口查看Spring容器启动过程的完整信息。jYT28资讯网——每日最新资讯28at.com

图片图片jYT28资讯网——每日最新资讯28at.com

在你的项目中你还可以注入ApplicationStartup,在自己的业务代码中进行监控。jYT28资讯网——每日最新资讯28at.com

@Resourceprivate ApplicationStartup startup ;

这样你就可以进行start和end方法调用进行记录监控了。jYT28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-98190-0.html管理SpringBoot项目的三个强大的功能是否用过?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一网打尽:12 个 find() 函数在 Python 中的创意实践

下一篇: 微服务 | 微服务之Feign 与 Ribbon

标签:
  • 热门焦点
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人&ldquo;珍藏&rdquo;是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了&ldquo;本地生活&rdquo;入口,位置较深,位于首页的&ldquo;充值中心&rdquo;内,目前主要售卖美食相关的
  • 新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的&ldquo;新电商三兄弟&rdquo;成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己&ldquo;当家&rdquo;的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
Top