AnnotationScopeMetadataResolver 解析作用域元数据
生活随笔
收集整理的這篇文章主要介紹了
AnnotationScopeMetadataResolver 解析作用域元数据
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
AnnotationScopeMetadataResolver 通過resolveScopeMetadata()方法解析注解Bean 定義類的作用域元信息,即判斷注冊(cè)的Bean 是原生類型(prototype)還是單態(tài)(singleton)類型,其源碼如下:
//解析注解Bean定義類中的作用域元信息 @Override public ScopeMetadata resolveScopeMetadata(BeanDefinition definition) {ScopeMetadata metadata = new ScopeMetadata();if (definition instanceof AnnotatedBeanDefinition) {AnnotatedBeanDefinition annDef = (AnnotatedBeanDefinition) definition;//從注解Bean定義類的屬性中查找屬性為”Scope”的值,即@Scope注解的值//annDef.getMetadata().getAnnotationAttributes()方法將Bean//中所有的注解和注解的值存放在一個(gè)map集合中AnnotationAttributes attributes = AnnotationConfigUtils.attributesFor(annDef.getMetadata(), this.scopeAnnotationType);//將獲取到的@Scope注解的值設(shè)置到要返回的對(duì)象中if (attributes != null) {metadata.setScopeName(attributes.getString("value"));//獲取@Scope注解中的proxyMode屬性值,在創(chuàng)建代理對(duì)象時(shí)會(huì)用到ScopedProxyMode proxyMode = attributes.getEnum("proxyMode");//如果@Scope的proxyMode屬性為DEFAULT或者NOif (proxyMode == ScopedProxyMode.DEFAULT) {//設(shè)置proxyMode為NOproxyMode = this.defaultProxyMode;}//為返回的元數(shù)據(jù)設(shè)置proxyModemetadata.setScopedProxyMode(proxyMode);}}//返回解析的作用域元信息對(duì)象return metadata; }上述代碼中的annDef.getMetadata().getAnnotationAttributes()方法就是獲取對(duì)象中指定類型的注解的值。
?
總結(jié)
以上是生活随笔為你收集整理的AnnotationScopeMetadataResolver 解析作用域元数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AnnotationConfigAppl
- 下一篇: AnnotationConfigUtil