1、到直接引用的jar包的META-INF/下查找文件spring.handlers和spring.schemas文件,并加载业务方自定义的namespace parser和bean definition parser。
spring的是ContextNamespaceHandler。
2、从WEB-INF/web.xml开始读取webService所涉及的所有xml文件。按顺序读取解析,调用对应的bean definition parser(spring自带的和业务方自定义的)解析出若干bean definition(一个bean就对应一个bean definition),此时占位符还没有被替换;
3、 将所有beanFactoryPostProcessor创建出来(包括spring内置的和xml中定义的),将已确定的beanPostProcessor也创建出来(包括spring内置的和xml文件中定义的),再创建beanFactory,然后依次调用所有的beanFactoryPostProcessor。值得注意的是,标签”property-placeholder”被解析后对应的就是一个beanFactoryPostProcessor(PropertySourcesPlaceholderConfigurer),占位符的替换也由它完成,不过它只替换beenDefinition的propertyValues,支持的属性类型是Object[],List, Set, Map, String,并且只替换BeanDefinition中的propertyValues,attributes是不会被替换的。
4、按顺序创建bean。