Spring boot,Spring-Lifecycle接口

 2023-10-15 阅读 35 评论 0

摘要:如果一個類A實現Lifecycle接口,那么需要注意 1.A可以是任意一個容器中的Bean,A也可以是容器 2.當容器調用start或者close方法的時候,會根據A中的isRunning方法判斷是否調用A中的start或者stop方法(回調) 下面定義一個A @Component pub

如果一個類A實現Lifecycle接口,那么需要注意
1.A可以是任意一個容器中的Bean,A也可以是容器
2.當容器調用start或者close方法的時候,會根據A中的isRunning方法判斷是否調用A中的start或者stop方法(回調)

下面定義一個A

@Component
public class MyLifeCycleBean1 implements Lifecycle {@Overridepublic void start() {System.out.println("start1");}@Overridepublic boolean isRunning() {System.out.println("isRunning1");return false;}@Overridepublic void stop() {System.out.println("stop1");}
}

簡單闡述一下這個類的三個方法
start:如果類A沒運行,則走該方法,如果類A已經運行,則不會走該方法
isRunning:返回true表示類A已經運行,返回false表示類A沒運行
stop:如果類A正在運行,則走該方法,如果類A已經停止,則不走該方法
main方法1

public static void main(String[] args) {AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("MyLifeCycleBean1所在包");ctx.start();ctx.close();
}

Spring boot?該方法會打印出

isRunning1
start1
isRunning1

當調用ctx的start方法的時候,ctx會先調用一下isRunning方法,由于isRunning方法一直返回false,ctx認為類A沒有運行,所以ctx會調用start方法,表示讓類A運行起來
當調用ctx的close方法的時候,同上,ctx會也會先調用一下isRunning方法,由于isRunning方法一直返回false,所以ctx認為類A壓根就沒有運行(停止狀態),那么ctx就沒必要再調用stop方法,所以沒有打印出"stop1"

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/137011.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息