服务编排
1.在META_INF目录下新建My-spring.xsd文件;
2.新建MyNamespacesHandler类文件,继承NamespaceHandlerSupport:
新增内部类BeanDefinitionParser extends AbstractSingleBeanDefinitionParser
新增北部类MyContextBeanDefinitionParser extends MyNamespacesHandler.BeanDefinitionParser,重写doParse方法,编写自定义xsd文件解析逻辑;
实现init方法,在内部调用registerBeanDefinitionParser方法,注册自定义文件解析类MyContextBeanDefinitionParser;
3.在META_INF目录下新建Spring.handlers文件,增加如下内容:
http\://www.xxx.com/schema/core=com.xxx.My.spring.handlers.MyNamespacesHandler
4.在META_INF目录下新建spring.schemas文件,增加如下内容:
http\://www.xxx.com/schema/My/3.0/My-spring.xsd=META-INF/My-spring.xsd
5.新建使用自定义标签以及Spring标签的bean配置文件,将此配置文件交给Spring进行解析,Spring调用parseCustomElement,调用MyContextBeanDefinitionParser的doParse方法
6.ServiceRoute解析完成后,调用afterPropertiesSet,注册子元素建造器,根据子元素建造器build和子元素列表processorDefinitions创建子元素处理器Processor
7.web.xml新建自定义MyServlet extends HttpServlet,重新service方法
8.请求过来根据url获取处理节点,调用节点的解码、ServiceRoute(根Processor,由根Processor调用子Processor执行具体的处理逻辑)、编码