1

私は春のユーザーです。そして私は春のソースコードを読み始めます。

AbstractApplicationContextを読んだところ、start()メソッドが1つあることがわかりました。また、ApplicationContextの初期化時にメソッドが呼び出されないことがわかりました。

私の質問:1)メソッドの使用法は何ですか?単語の(開始)の意味によると、ApplicationContextが機能する前に呼び出す必要があると思います。しかし、そうではありません。

2)applicationContextが機能し始めたイベントをどのように聞くことができますか?コードを読んだ後、メソッドがContextStartedEventを公開することがわかりました。しかし、コンテキストを初期化しただけでも、コンテキストは機能し、イベントを公開しません。イベントをリッスンして、applicationcontextの開始を追跡することはできません。

4

1 に答える 1

2

このstartメソッドは、アプリケーションの起動プロセスの一部として呼び出されるライフサイクルインターフェイスの一部です。

コンテキストの開始時に通知を受け取りたい場合は、ライフサイクルインターフェースを実装するBeanを宣言する必要があります。

public class org.example.MyLifecycle implements Lifecycle {
    private boolean started = false;
    public boolean isRunning() {
        return started;
    }
    public void start() {
        System.err.println("MyLifecycle starting");
        started = true;
    }
    public void stop() {
        System.err.println("MyLifecycle stopping");
        started = false;
    }
}

それで

<bean class="org.example.MyLifecycle"/>

LifecycleProcessorインターフェースを実装する呼び出されたコンテキストにBeanがない限り、これはすべてデフォルトでDefaultLifecycleProcessorによって処理されます。lifecycleProcessor

于 2012-10-09T14:57:24.673 に答える