4

たとえば、application-context.xmlで宣言した場合:

<context:annotation-config/>

私は公式ドキュメントから読みました:

暗黙的に登録されたポストプロセッサには、AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor、および前述のRequiredAnnotationBeanPostProcessorが含まれます。

しかし、Springが内部でこれをどのように機能させるのか疑問に思っていました。この1ライナーは、ドキュメントに記載されているポストプロセッサー用のいくつかのBean定義に変換されると思います。

しかし、私の質問は、どのSpringコンポーネント/クラスがこの「1ライナーから複数のBean定義への変換」機能を実装しているのかということです。

4

3 に答える 3

5

舞台裏でannotation-configタグが何をするのかを知りたい場合は、AnnotationConfigBeanDefinitionParserを調べてください。

このようなタグを定義するために使用される一般的なメカニズムについて詳しく知りたい場合 は、Springリファレンスドキュメントのこのセクションを確認してください。

スキーマ定義、NameSpaceHandler、およびBeanDefinitionParserが必要です

于 2012-07-14T05:56:41.967 に答える
1

gkamalによる良い参考文献。

何が起こるかというと、Springはアプリの起動時にこれらすべてのカスタム名前空間を登録し、名前空間固有のハンドラーはカスタム名前空間の各要素のパーサーを登録します。たとえば、私が自分のプロジェクトの1つで行ったカスタム名前空間は次のとおりです。

https://github.com/williewheeler/kite/blob/master/src/main/java/org/zkybase/kite/config/xml/KiteNamespaceHandler.java

NamespaceHandlerが行うのは、カスタム名前空間のパーサーの束を登録することだけであることに注意してください。

次に、Springが実際に構成ファイルを解析すると、質問で提案されているように、カスタム名前空間要素がBean定義に変換されます。非常に単純なBean定義である場合もあります。

https://github.com/williewheeler/kite/blob/master/src/main/java/org/zkybase/kite/config/xml/CircuitBreakerParser.java

そして時々それは豆の定義の全体の束です:

https://github.com/williewheeler/kite/blob/master/src/main/java/org/zkybase/kite/config/xml/AnnotationConfigParser.java

于 2012-07-14T06:53:23.330 に答える
0

別のファイルのBean定義からプロパティ値を外部化するのに役立ちます。

定義されたプロパティは、起動時に解決されます。

プレースホルダーはこのスタイルに従います${property-name}

于 2017-03-24T05:32:45.537 に答える