AOP开启注解
在使用注解@Aspect来进行AOP操作时,需要在xml中进行配置
1 | <!-- 使@Aspect注解生效 --> |
创建BeanFactory时obtainFreshBeanFactory()在解析xml加载BeanDefinition中,执行parseBeanDefinitions方法进行解析发现其内有逻辑是
1 | delegate.parseCustomElement(ele) |
即进行自定义标签的解析,会去META-INF/spring.handlers中寻找对应的handler,该标签的namespace是http://www.springframework.org/schema/aop,去spring.handlers中找到对应的记录
1 | NamespaceHandler handler = this.readerContext.getNamespaceHandlerResolver().resolve(namespaceUri); |
1 | org.springframework.aop.config.AopNamespaceHandler = |
还有一个配置是spring.schemas,以找到对应的xsd文件
1 | org/springframework/aop/config/spring-aop-3.1.xsd = |
然后执行该handler中的init方法
1 | NamespaceHandler namespaceHandler = (NamespaceHandler) BeanUtils.instantiateClass(handlerClass); |
即执行AopNamespaceHandler#init