Spring: 获取Bean & Bean初始化
从Spring 应用上下文获取 Bean 的常用姿势 - SegmentFault 思否


package io.deem.waive.config; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanNameAware; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component(value = "customBeanName") public class ComponentBean implements ApplicationContextAware, BeanNameAware, BeanFactoryAware, BeanClassLoaderAware{ private final String deem = "DEEM"; private BeanFactory beanFactory; public ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{ System.out.println("\033[37;7m" + "applicationContextAware" + "\033[0m"); this.applicationContext = applicationContext; } @Override public void setBeanName(String beanName){ System.out.println("\033[37;7m" + beanName + "\033[0m"); } @Override public void setBeanClassLoader(ClassLoader classLoader){ System.out.println("\033[37;7m" + "BeanClassLoaderAware" + "\033[0m"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException{ System.out.println("\033[37;7m" + "BeanFactoryAware" + "\033[0m"); this.beanFactory = beanFactory; } public BeanFactory getBeanFactory(){ return beanFactory; } }
@Test void waive(){ try(AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext("io.deem.waive")){ ComponentBean bean = annotationConfigApplicationContext.getBean(ComponentBean.class); System.out.println("\033[37;7m" + bean + "\033[0m"); System.out.println("(bean.getBeanFactory()==beanFactory) = " + (bean.getBeanFactory() == beanFactory)); } }

 
 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号