前面说过了spring的Schema扩展支持,可以看这里3.1Spring源码解析——自定义标签的使用,这里就不在进行多余的复述了。
前面讲过,Spring支持自定义的扩展组件,但是必须以下两点
- 自定义类并实现Spring的BeanDefinitionParser类来解析XSD文件中的定义和组件定义,
- 自定义类并实现Spring的NamespaceHandlerSupport目的是将组建注册到Spring容器
对应的文件的解析类可以在META-INF文件夹的Spring.handlers中可以找到
在代码中对定义的Aspect的注解进行解析的类为AopNamespaceHandler:
public void init() {
// In 2.0 XSD as well as in 2.1 XSD.
registerBeanDefinitionParser("config", new ConfigBeanDefinitionParser());
registerBeanDefinitionParser("aspectj-autoproxy", new AspectJAutoProxyBeanDefinitionParser());
registerBeanDefinitionDecorator("scoped-proxy", new ScopedProxyBeanDefinitionDecorator());
// Only in 2.0 XSD: moved to context namespace as of 2.1
registerBeanDefinitionParser("spring-configured", new SpringConfiguredBeanDefinitionParser());
}
在解析配置文件的时候,一旦遇到aspectj-autoproxy注解时就会使用解析器AspectJAutoProxyBeanDefinitionParser进行解析。
&esmp;下一篇Spring的AOP的解析——AnnotationAwareAspectJAutoProxyCreator