BeanLifecyclePhase.java

package sprout.context.lifecycle;

import sprout.beans.BeanDefinition;
import sprout.context.BeanFactory;

import java.util.List;


public interface BeanLifecyclePhase {

    // 단계 이름
    String getName();

    // 실행 순서
    int getOrder();

    // 단계 실행
    void execute(PhaseContext context) throws Exception;

    // 단계 실행에 필요한 컨텍스트 정보
    class PhaseContext {
        private final BeanFactory beanFactory;
        private final List<BeanDefinition> infraDefs;
        private final List<BeanDefinition> appDefs;
        private final List<String> basePackages;

        public PhaseContext(BeanFactory beanFactory, List<BeanDefinition> infraDefs,
                            List<BeanDefinition> appDefs, List<String> basePackages) {
            this.beanFactory = beanFactory;
            this.infraDefs = infraDefs;
            this.appDefs = appDefs;
            this.basePackages = basePackages;
        }

        public BeanFactory getBeanFactory() {
            return beanFactory;
        }

        public List<BeanDefinition> getInfraDefs() {
            return infraDefs;
        }

        public List<BeanDefinition> getAppDefs() {
            return appDefs;
        }

        public List<String> getBasePackages() {
            return basePackages;
        }
    }
}