BeanPostProcessorRegistrationPhase.java
package sprout.context.lifecycle;
import sprout.beans.processor.BeanPostProcessor;
import sprout.context.BeanFactory;
import sprout.context.builtins.DefaultListableBeanFactory;
import java.util.List;
/**
* BeanPostProcessor 등록 단계
* 애플리케이션 빈 생성 전에 모든 BeanPostProcessor를 등록
*/
public class BeanPostProcessorRegistrationPhase implements BeanLifecyclePhase {
@Override
public String getName() {
return "BeanPostProcessor Registration";
}
@Override
public int getOrder() {
return 200;
}
@Override
public void execute(PhaseContext context) {
BeanFactory beanFactory = context.getBeanFactory();
if (!(beanFactory instanceof DefaultListableBeanFactory)) {
throw new IllegalStateException("BeanFactory must be DefaultListableBeanFactory");
}
DefaultListableBeanFactory factory = (DefaultListableBeanFactory) beanFactory;
// 모든 BeanPostProcessor를 찾아서 등록
List<BeanPostProcessor> allBeanPostProcessor = beanFactory.getAllBeans(BeanPostProcessor.class);
for (BeanPostProcessor beanPostProcessor : allBeanPostProcessor) {
factory.addBeanPostProcessor(beanPostProcessor);
}
}
}