Parsing spring xml configuration file labels

Springmvc example of a configuration file is:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

    <description>spring Configuration</description>
    
    <mvc:annotation-driven />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/" />
        <property name="suffix" value=".jsp" />
    </bean>

    < Context: Scan-Component Base-Package = "org.xuan.springmvc.controller" 
        use-default-Filters = "to false" > <-! Base Package If multiple-use "," spacer -> 
        < context : the include filter- type = "annotation" 
            expression the = "org.springframework.stereotype.Controller"  />  ! <- sub-scanning tags are used to add annotations -> 
    </ context: scan-Component > 
</ Beans >

sprin how to read after the file is parsed it?

The first contains the xml namespace, such as:

xmlns:mvc="http://www.springframework.org/schema/mvc"

This file namespace resolution rules corresponding to the spring-xxx-xxxRELEASE.jar / META-INF / spring.handlers file, such as:

spring-web-4.3.7.RELEASE.jar/META-INF/spring.handlers

Open the file spring.handlers

http\://www.springframework.org/schema/mvc=org.springframework.web.servlet.config.MvcNamespaceHandler

Class is processed MvcNamespaceHandler

Then there are some in this xml tags such as:

<mvc:annotation-driven />

This tag corresponds resolution configuration in MvcNamespaceHandler, open the file to view the contents:

public class MvcNamespaceHandler extends NamespaceHandlerSupport {

    @Override
    public void init() {
        registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());
        registerBeanDefinitionParser("default-servlet-handler", new DefaultServletHandlerBeanDefinitionParser());
        registerBeanDefinitionParser("interceptors", new InterceptorsBeanDefinitionParser());
        registerBeanDefinitionParser("resources", new ResourcesBeanDefinitionParser());
        registerBeanDefinitionParser("view-controller", new ViewControllerBeanDefinitionParser());
        registerBeanDefinitionParser("redirect-view-controller", new ViewControllerBeanDefinitionParser());
        registerBeanDefinitionParser("status-controller", new ViewControllerBeanDefinitionParser());
        registerBeanDefinitionParser("view-resolvers", new ViewResolversBeanDefinitionParser());
        registerBeanDefinitionParser("tiles-configurer", new TilesConfigurerBeanDefinitionParser());
        registerBeanDefinitionParser("freemarker-configurer", new FreeMarkerConfigurerBeanDefinitionParser());
        registerBeanDefinitionParser("velocity-configurer", new VelocityConfigurerBeanDefinitionParser());
        registerBeanDefinitionParser("groovy-configurer", new GroovyMarkupConfigurerBeanDefinitionParser());
        registerBeanDefinitionParser("script-template-configurer", new ScriptTemplateConfigurerBeanDefinitionParser());
        registerBeanDefinitionParser("cors", new CorsBeanDefinitionParser());
    }

}

So it will be processed to AnnotationDrivenBeanDefinitionParser when the tag read annotation-driven time.

Guess you like

Origin www.cnblogs.com/grasp/p/11079748.html