Sobes.tech
Junior — Middle

Spring ha il controllo sul ciclo di vita del bean quando si utilizza la modalità di creazione prototipo?

sobes.tech AI

Risposta dell'AI

При использовании прототипного (prototype) режима в Spring контейнер создает новый экземпляр бина каждый раз при запросе. Однако Spring не управляет полным жизненным циклом таких бинов: он создает бин и вызывает методы инициализации, но не вызывает методы уничтожения (destroy), так как не отслеживает их после выдачи.

Это значит, что если бин в прототипном режиме требует освобождения ресурсов, то ответственность за вызов методов очистки ложится на разработчика.

Пример:

@Component
@Scope("prototype")
public class MyPrototypeBean {
    @PostConstruct
    public void init() {
        System.out.println("Инициализация прототипного бина");
    }

    @PreDestroy
    public void cleanup() {
        System.out.println("Очистка прототипного бина");
    }
}

В этом случае метод cleanup не будет вызван автоматически Spring'ом.