beanFactoryPostProcessor原理分析

57 阅读1分钟

ConfigurableListableBeanFactory接口中的重要api

  1. 这节主要是深刻认识beanFactory的api,bean工厂的处理器,主要是提供给程序员扩展的,在spring容器运行期间可以让程序员对BeanFactory组件进行设置。
  2. 创建一个BeanFactoryPostProcessorTest类实现BeanFactoryPostProcessor接口。
public class BeanFactoryPostProcessorTest implements BeanFactoryPostProcessor {
	@Override
	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
		ScannedGenericBeanDefinition m = (ScannedGenericBeanDefinition) beanFactory.getBeanDefinition("m");
		m.setBeanClass(M.class);
	}
}
  1. 在这里说一下BeanFactoryPostProcessor接口的子实现类:

  1. 好了我们再看实现BeanFactoryPostProcessor接口后都是由postProcessBeanFactory()方法来实现对beanFactory的前置处理。他是给定一个ConfigurableListableBeanFactory对象,然后可以让程序员来对该对象进行操作。
public class BeanFactoryPostProcessorTest implements BeanFactoryPostProcessor {
	@Override
	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
	}
}
  1. 我们点进该对象中的可以看到他是一个接口,那么他肯定有子实现类:

  1. 大多数情况下我们用的是第一个DefaultListableBeanFactory这个实现类。

那好,其实针对于BeanFactory的扩展原理我们就要从这里开始讲解了,从较为重要的方法来入手:

  1. ignoreDependencyType(Class<?> type);
  2. ignoreDependencyInterface(Class<?> ifc);
  3. registerResolvableDependency(Class<?> dependencyType, @Nullable Object autowiredValue);
  4. clearMetadataCache();--void freezeConfiguration();--boolean isConfigurationFrozen();
  5. registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException;
  6. AnnotationBeanDefinitionReader()