Как интерфейс Lifecycle работает в Spring? Что такое «синглтон-бобы верхнего уровня»?

Весной сказано, что "Обратите внимание, что интерфейс жизненного цикла поддерживается только на одноэлементных компонентах верхнего уровня. " ВотURL

мойLifecycleBeanTest.xml описывает бин следующим образом:


    

так выглядитtopish» а также "singletonish» довольно.

Что это значит? Как сообщить Spring о реализации моего компонентаLifecycle и сделать что-нибудь с этим?

Предположим, мой основной метод выглядит следующим образом весной

public static void main(String[] args) {
    new ClassPathXmlApplicationContext("/tests/LifecycleBeanTest.xml").close();
}

Таким образом, он создает экземпляр контекста, а затем немедленно закрывает его.

Могу ли я создать бин в моей конфигурации, что задерживаетclose() выполнение, пока приложение не сделает все этос работает? Так что основной метод потока ожидает завершения приложения?

Например, следующий компонент не работает так, как я думал. ниstart() неstop() называется.

package tests;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.Lifecycle;

public class LifecycleBean implements Lifecycle {

    private static final Logger log = LoggerFactory.getLogger(LifecycleBean.class);

    private final Thread thread = new Thread("Lifecycle") {
        {
            setDaemon(false);
            setUncaughtExceptionHandler(new UncaughtExceptionHandler() {

                @Override
                public void uncaughtException(Thread t, Throwable e) {
                    log.error("Abnormal thread termination", e);
                }
            });
        }

        public void run() {
            for(int i=0; i

Ответы на вопрос(5)

Ваш ответ на вопрос