Lifecycle

来源:互联网 发布:网络组件设备选型 编辑:程序博客网 时间:2024/06/08 09:02

一个通用接口,定义了控制Bean生命周期的方法。
此接口通用的应用场景为异步处理。此接口并没有自动启动的语义在里面。如果需要这种功能,可以考虑实现SmartLifecycle接口。
此接口既可以被Spring的各组件实现,也可以被容器本身实现。当实现此接口的类本身是Container时,在容器上调用此接口的方法的同时,容器本身应该通知其包含的所有实现了此接口的组件。
需要注意的是,在Spring中,只有顶层的单例Bean才能使用此接口的功能。其他类型的Bean即使实现了此接口,Spring也会忽略。这时可以考虑使用SmartLifecycle接口,此接口继承了应用上下文的启动和销毁过程

public interface Lifecycle {    /**     * 启动组件     * 即使组件已经启动,也不应该抛异常。直接不处理就好     * 如果实现类是容器的话,向其包含的所有组件发送start信号。     */    void start();    /**     * 关闭组件,通常来将,这种同步处理的。在此方法返回后,组件就应该已经关闭。如果要异步关闭组件     * 考虑实现SmartLifecycle接口。     * 需要注意的是,并不能保证stop notification一定在bean的destruction之前:对于正常的关闭,实现了Lifecycle     * 的bean会首先收到stop notification然后才处理destruction回调函数;但是当在调用ApplicationContext的     * refresh的时候退出的话,Bean的stop 方法不会被调用     */    void stop();    /**     * 检测当前应用是否是正在运行。     * 当实现类是容器时煤,只有在其所有的组件都在运行才会返回true     */    boolean isRunning();}
原创粉丝点击