context:component-scan探析

个人网站:爱码社

spring的applicationContext配置中用下面的标签进行对要注解的包进行扫描,并解析出所有标有注解标识的类,生成
beanDefinitions。
<context:component-scan base-package="com.test" />

上述标签是在 ContextNamespaceHandler在被注册为 ComponentScanBeanDefinitionParser

其他的注册类如下:

		registerBeanDefinitionParser("property-placeholder", new PropertyPlaceholderBeanDefinitionParser());
		registerBeanDefinitionParser("property-override", new PropertyOverrideBeanDefinitionParser());
		registerBeanDefinitionParser("annotation-config", new AnnotationConfigBeanDefinitionParser());
		registerBeanDefinitionParser("component-scan", new ComponentScanBeanDefinitionParser());
		registerBeanDefinitionParser("load-time-weaver", new LoadTimeWeaverBeanDefinitionParser());
		registerBeanDefinitionParser("spring-configured", new SpringConfiguredBeanDefinitionParser());
		registerBeanDefinitionParser("mbean-export", new MBeanExportBeanDefinitionParser());
		registerBeanDefinitionParser("mbean-server", new MBeanServerBeanDefinitionParser());


ComponentScanBeanDefinitionParser最后也注册了以下处理器,用于解析组件中的其他注解标识。
由于其属性annotation-config默认为true,所以不再需要<context:annotation-config />标识,即可完成以下PostProcessor的注册

org.springframework.context.annotation.ConfigurationClassPostProcessor
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor

你可能感兴趣的:(spring)