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