Spring重要组件
接口BeanPostProcessor:
        拦截所有容器中的bean,并且可以对bean进行初始化、销毁操作。

 

BeanFactoryPostProcessor:
        拦截容器。
//拦截整个容器
@Component
public class MyBeanFactory implements BeanFactoryPostProcessor{
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        //beanFactory.getBeanDefinition(""); //根据bean的id获取bean

        int count = beanFactory.getBeanDefinitionCount();
        System.out.println("容器中bean的个数:"+count);

        String[] names = beanFactory.getBeanDefinitionNames();
        System.out.println("容器中所有bean的名字:"+ Arrays.asList(names));
    }
}

  

BeanDefinitionRegistryPostProcessor:
        即将被加载之前(解析之前,称为BeanDefination对象之前)
 
监听器:可以监听事件,监听的对象必须是ApplicationEvent自身或子类或子接口。
方式一:
        1.必须实现接口ApplicationListener;
        2.可以监听事件,监听的对象必须是ApplicationEvent自身或子类或子接口;
        3.要让Spring识别自己,必须加入IOC容器。
方式二:
        注解形式。
@Component
public class MyListener2 {
    //监听方法
    @EventListener(classes = ApplicationEvent.class)
    public void myListenerMethod(ApplicationEvent event){
        System.out.println("cccccc"+event);
    }
}

  

自定义被监听事件:
        1.自定义类实现ApplicationEvent接口(自定义事件);
        2.发布事件。
context.publishEvent(new ApplicationEvent("myEvent") {});