Spring注釈原理探索(三)

1417 ワード

のJavaはどうやって注釈を識別しますか?
キーワード:Java反射java.lang.reflectパッケージ、反射機能を実現するツール類。注釈処理クラス:java.lang.reflect.AnnotatedElement。
プログラムは反射によって、ある種類のAnnotatedElementオブジェクトを取得した後、このオブジェクトを呼び出して、Annotationにアクセスすることができます。
  • Annotation[]get Annotations()
  • Returns annotations that are present on this element.
  • default boot isAnnotationPresent
  • Returns true if an annotation for the specified type is present on this element,else false.
  • default T get DeclardAnnotation
  • Returns this element's annotation for the specified type if such an annotation is directly present,else null.
    注釈を処理するために、**注釈プロセッサ*は3つのことをします。
  • 設定ファイルで管理されているbean
  • を読み出す。
  • 实例化bean
  • 注釈プロセッサは、インスタンスbeanにおける注釈を取得し、動作する

  • 前提前提仮説:私達はすでにカスタムの注釈類を作っています。例えば@Request Mappingの注釈類と適切なbeanに注釈表示をしています。自分の注釈プロセッサを作成します。
    //          
    public class ClassPathXMLApplicationContext {
        
        public ClassPathXMLApplicationContext(String configFileName) {
            //           bean
            readXMLConfigFile(configFileName);
            //    bean
            instanceBean();
            //      bean
            registerAnnotationBean();
        }
    
        //         bean
        private void readXMLConfigFile() {
    
        }
    
        //    bean
        private void instanceBean() {
    
        }
    
        //      bean
        private void registerAnnotationBean() {
    
        }
    }
    
    Springはどのように注釈のスキャン登録を実現しますか?Spring注解の原理を参考にして(四)のSpring処理注解のソースコードを分析してください。