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));
    }
  }

 

 

 

 

 

posted @ 2022-05-03 13:37  ascertain  阅读(89)  评论(0编辑  收藏  举报