ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring Aware 순서
    카테고리 없음 2023. 4. 18. 14:43

    spring Aware order

    이건 메모 추후에 다신 확인
    AbstractApplicationContext finishBeanFactoryInitialization(beanFactory)
    
    AbstractAutowireCapableBeanFactory 클래스에서 아래와 같이 셋팅
    BeanNameAware
    
    BeanClassLoaderAware
    
    BeanFactoryAware
    
        private void invokeAwareMethods(final String beanName, final Object bean) {
            if (bean instanceof Aware) {
                if (bean instanceof BeanNameAware) {
                    ((BeanNameAware) bean).setBeanName(beanName);
                }
                if (bean instanceof BeanClassLoaderAware) {
                    ((BeanClassLoaderAware) bean).setBeanClassLoader(getBeanClassLoader());
                }
                if (bean instanceof BeanFactoryAware) {
                    ((BeanFactoryAware) bean).setBeanFactory(AbstractAutowireCapableBeanFactory.this);
                }
            }
        }
    
    ApplicationContextAwareProcessor 클래스에서 아래와 같이 셋팅
    EnvironmentAware
    
    EmbeddedValueResolverAware
    
    ResourceLoaderAware
    
    ApplicationEventPublisherAware
    
    MessageSourceAware
    
    ApplicationContextAware
    
        private void invokeAwareInterfaces(Object bean) {
            if (bean instanceof Aware) {
                if (bean instanceof EnvironmentAware) {
                    ((EnvironmentAware) bean).setEnvironment(this.applicationContext.getEnvironment());
                }
                if (bean instanceof EmbeddedValueResolverAware) {
                    ((EmbeddedValueResolverAware) bean).setEmbeddedValueResolver(
                            new EmbeddedValueResolver(this.applicationContext.getBeanFactory()));
                }
                if (bean instanceof ResourceLoaderAware) {
                    ((ResourceLoaderAware) bean).setResourceLoader(this.applicationContext);
                }
                if (bean instanceof ApplicationEventPublisherAware) {
                    ((ApplicationEventPublisherAware) bean).setApplicationEventPublisher(this.applicationContext);
                }
                if (bean instanceof MessageSourceAware) {
                    ((MessageSourceAware) bean).setMessageSource(this.applicationContext);
                }
                if (bean instanceof ApplicationContextAware) {
                    ((ApplicationContextAware) bean).setApplicationContext(this.applicationContext);
                }
            }
        }
    
    XXXXXAwareProcessor를 참고 하면 됨 BeanPostProcessor를 구현한걸로 보임. 모두다 그렇지는 않음 Spring 4.2.5의 전체 목록. 일단 기본적인것만 확인 했다.
    ApplicationContextAware, ApplicationEventPublisherAware, BeanClassLoaderAware, BeanFactoryAware, BeanNameAware, BootstrapContextAware, EmbeddedValueResolverAware, EnvironmentAware, ImportAware, LoadTimeWeaverAware, MessageSourceAware, NotificationPublisherAware, PortletConfigAware, PortletContextAware, ResourceLoaderAware, SchedulerContextAware, ServletConfigAware, ServletContextAware
    

    댓글

Designed by Tistory.