当前位置: 代码迷 >> 综合 >> Spring源码分析之Scope注解处理
  详细解决方案

Spring源码分析之Scope注解处理

热度:68   发布时间:2024-02-19 16:21:07.0

前言

本文旨在分析在Spring容器启动之时,@Scope注解的处理过程。

处理代码为:

ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(abd);
abd.setScope(scopeMetadata.getScopeName());//进入this.scopeMetadataResolver.resolveScopeMetadata方法
ScopeMetadata resolveScopeMetadata(BeanDefinition definition);//找到resolveScopeMetadata(BeanDefinition definition)方法的实现如下:@Overridepublic ScopeMetadata resolveScopeMetadata(BeanDefinition definition) {ScopeMetadata metadata = new ScopeMetadata();if (definition instanceof AnnotatedBeanDefinition) {AnnotatedBeanDefinition annDef = (AnnotatedBeanDefinition) definition;AnnotationAttributes attributes = AnnotationConfigUtils.attributesFor(annDef.getMetadata(), this.scopeAnnotationType);if (attributes != null) {metadata.setScopeName(attributes.getString("value"));ScopedProxyMode proxyMode = attributes.getEnum("proxyMode");if (proxyMode == ScopedProxyMode.DEFAULT) {proxyMode = this.defaultProxyMode;}metadata.setScopedProxyMode(proxyMode);}}return metadata;}

1.1

org.springframework.context.annotation.ConditionEvaluator#shouldSkip方法源码如下:

 

 

 

 

  相关解决方案