component-scan 标签

标签解析入口

org.springframework.context.annotation.ComponentScanBeanDefinitionParser

主方法很简洁,如下

	public BeanDefinition parse(Element element, ParserContext parserContext) {
		String[] basePackages = StringUtils.tokenizeToStringArray(element.getAttribute(BASE_PACKAGE_ATTRIBUTE),
				ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);

		// Actually scan for bean definitions and register them.
		ClassPathBeanDefinitionScanner scanner = configureScanner(parserContext, element);
		Set<BeanDefinitionHolder> beanDefinitions = scanner.doScan(basePackages);
		registerComponents(parserContext.getReaderContext(), beanDefinitions, element);

		return null;
	}

 

1、获得需要扫描的路径集合,这个是根据base-package配置来计算出来的

2、实例化一个扫描器,这里返回的实例是:ClassPathBeanDefinitionScanner 对象

3、扫描获得bean定义

4、向容器中注册这些bean定义

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章