BeanLifecycleManager.java

package sprout.context.lifecycle;

import java.util.Comparator;
import java.util.List;

/**
 * 빈 생명주기를 관리하는 매니저
 * 등록된 Phase들을 순서대로 실행
 */
public class BeanLifecycleManager {

    private final List<BeanLifecyclePhase> phases;

    public BeanLifecycleManager(List<BeanLifecyclePhase> phases) {
        this.phases = phases.stream()
                .sorted(Comparator.comparingInt(BeanLifecyclePhase::getOrder))
                .toList();
    }

    public void executePhases(BeanLifecyclePhase.PhaseContext context) throws Exception {
        for (BeanLifecyclePhase phase : phases) {
            System.out.println("--- Executing Phase: " + phase.getName() + " (order=" + phase.getOrder() + ") ---");
            phase.execute(context);
        }
    }
}