Spring源碼-內部好用的工具類

 

今天主要說一下,大家在研讀或者使用spring的過程中,可能忽略一些了spring提供的內部工具類,而且這些內部工具對於我們開發人員使用起來是非常的爽,效率也高,所以今天就簡單介紹幾個.

 

1 AnnotationUtils:處理註解的工具類

介紹Class提供的獲取註解相關方法:
1.1 <A extends Annotation>A getAnnotation(Class<A>annotationClass):獲取該class對象對應類上指定類型的Annotation,如果該類型註解不存在,則返回null


1.2 Annotation[] getAnnotations():返回修飾該class對象對應類上存在的所有Annotation


1.3 <A extends Annotation>A getDeclaredAnnotation(Class<A>annotationClass):這是Java 8中新增的,該方法獲取直接修飾該class對象對應類的指定類型的Annotation,如果不存在,則返回null(也就說只找自己的,繼承過來的註解這個方法就不管了)


1.4 Annotation[] getDeclaredAnnotations():返回修飾該Class對象對應類上存在的所有Annotation(同上,繼承的不管)


1.5 <A extends Annotation>A[] getAnnotationByType(Class<A>annotationClass):該方法的功能與前面介紹的getAnnotation()方法基本相似,但由於Java8增加了重複註解功能,因此需要使用該方法獲取修飾該類的指定類型的多個Annotation(會考慮繼承的註解)


1.6 <A extends Annotation>A[] getDeclaredAnnotationByType(Class<A>annotationClass):


 

2 AnnotatedElementUtils:查找註解內部具體的詳細信息

2.2 public static AnnotatedElement forAnnotations(final Annotation... annotations):給這麼多的Annos提供一個適配器(內部就是new了一個AnnotatedElement匿名內部類,沒啥特殊的)
2.2 public static Set<String> getMetaAnnotationTypes(AnnotatedElement element, String annotationName):簡單的說,就是返回指定Class上面這個註解上的註解(若沒有,返回null) 備註:不包含Java的元註解哦~
2.3 public static boolean hasMetaAnnotationTypes(AnnotatedElement element, Class<? extends Annotation> annotationType):
2.4 public static boolean isAnnotated(AnnotatedElement element, Class<? extends Annotation> annotationType)
 

3 AnnotationBeanUtils:拷貝註解值到指定的Bean中

3 AnnotationConfigUtils:和Config配置類有關的註解工具類

3.1 public static Set<BeanDefinitionHolder> registerAnnotationConfigProcessors(BeanDefinitionRegistry registry, @Nullable Object source):該方法主要是向容器註冊了一組基礎設施PostProcessor bean定義,這些bean定義生成的PostProcessor實例被框架自己用於識別註解配置類中的bean定義(就是我們上面說的7大默認Bean定義,role均爲:BeanDefinition.ROLE_INFRASTRUCTURE表示框架自己用的)。 它還爲Bean工廠設置了:setDependencyComparator和setAutowireCandidateResolver
3.2 public static void processCommonDefinitionAnnotations(AnnotatedBeanDefinition abd):處理通用的Bean定義上的註解,該方法從原始bean定義的元數據中獲取那些通用的註解信息:@Lazy,@DependsOn,@Role,@Description,然後設置AnnotatedBeanDefinition實例相應的屬性
 

ConfigurationClassUtils:Spring內部處理@Configuration的工具類

5 AnnotationAttributes:Map的封裝

5.1 AnnotatedTypeMetadata#getAnnotationAttributes:獲取註解所有的屬性
5.2 AnnotationAttributes#fromMap :轉化成map結構
5.3 AnnotatedElementUtils#getMergedAnnotationAttributes等系列方法
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章