网站备案回访电话号码,学校网站设计方案模板,wordpress 后台移除新闻,免费微网站与公众号平台对接容易看出#xff0c;Spring其实使用了一个Map了保存其映射关系#xff0c;key就是命名空间的uri#xff0c;value是NamespaceHandler对象或是Class完整名#xff0c;如果发现是类名#xff0c;那么用反射的方法进行初始化#xff0c;如果是NamespaceHandler对象#xff… 容易看出Spring其实使用了一个Map了保存其映射关系key就是命名空间的urivalue是NamespaceHandler对象或是Class完整名如果发现是类名那么用反射的方法进行初始化如果是NamespaceHandler对象那么直接返回。 NamespaceHandler映射关系来自于各个Spring jar包下的META-INF/spring.handlers文件以spring-context包为例:
http\://www.springframework.org/schema/contextorg.springframework.context.config.ContextNamespaceHandler
http\://www.springframework.org/schema/jeeorg.springframework.ejb.config.JeeNamespaceHandler
http\://www.springframework.org/schema/langorg.springframework.scripting.config.LangNamespaceHandler
http\://www.springframework.org/schema/taskorg.springframework.scheduling.config.TaskNamespaceHandler
http\://www.springframework.org/schema/cacheorg.springframework.cache.config.CacheNamespaceHandler体系接口 init resolve中调用了其init方法此方法用以向NamespaceHandler对象注册BeanDefinitionParser对象。此接口用以解析顶层(beans下)的非默认命名空间元素比如context:annotation-config /。 所以这样逻辑就很容易理解了: 每种子标签的解析仍是策略模式的体现init负责向父类NamespaceHandlerSupport注册不同的策略由父类的NamespaceHandlerSupport.parse方法根据具体的子标签调用相应的策略完成解析的过程。
如