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

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

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

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

1. 管理功能Admin Features

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

spring:  application:    admin:      enabled: true

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

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

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

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

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

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

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

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

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

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

2. 应用退出

每个SpringApplication都向JVM注册一个关闭挂钩,以确保ApplicationContext在退出时正常关闭。所有标准的Spring生命周期回调(如DisposableBean接口或@PreDestroy注释)都可以使用。TBw28资讯网——每日最新资讯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只会返回第一个非零的退出码。TBw28资讯网——每日最新资讯28at.com

SpringBoot的退出操作是调用当前容器ConfigurableApplicationContext#close方法。所以当前容器中所有实现了DisposableBean或使用了@PreDestory注解他们对应的回调方法都执行。TBw28资讯网——每日最新资讯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 测试

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

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

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

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

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

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

3. 应用启动跟踪

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

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

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

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

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

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

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

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

@Resourceprivate ApplicationStartup startup ;

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

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

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

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

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

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 得物效率前端微应用推进过程与思考

    得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 学习JavaScript的10个理由...

    学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 为什么你不应该使用Div作为可点击元素

    为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 每天一道面试题-CPU伪共享

    每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • 自研Exynos回归!三星Galaxy S24系列将提供Exynos和骁龙双版本

    自研Exynos回归!三星Galaxy S24系列将提供Exynos和骁龙双版本

    年初,全新的三星Galaxy S23系列发布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三个版本,全系搭载超频版骁龙8 Gen 2,虽同样采用台积电4nm工艺制
  • iQOO Neo8系列或定档5月23日:首发天玑9200+ 安卓跑分王者

    iQOO Neo8系列或定档5月23日:首发天玑9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
Top