1

カスタム名前空間を使用して、一部のフレームワーク コンポーネントの展開を簡素化します。

私たちの設定は多かれ少なかれ次のようになります。

<rf:container attribute1="id">
  <property name="processors" value="5" />
</rf:container>

カスタムの必須属性の数とオプションのプロパティのセット。Bean 定義に解析されます。この Bean に対してのみ共有または宣言できる Bean として表されるプロパティを受け入れるように拡張する必要があります。

スタンドアロン Bean として定義された構成 Bean 定義は、次のように作成されます。

<rf:config id="queue" size="100" bytes="1M"/>

次に、プロパティとして設定するか、 <property> タグ内に直接埋め込むことができます。

しかし、私はそれを単純化し、次のようなショートカットを提供したいと思います:

<rf:container attribute1="id">
  <property name="processors" value="5" />
  <rf:config size="100" bytes="1M"/>
</rf:container>

これにより、多くの場合、構成がより表現力豊かになります。

現時点では、両方のタグが BeanDefinitionParser 実装によって解析されます。同じ名前で BeanDefinitionDecorator を使用しようとしましたが、どちらかまたは両方の使用方法が完全に理解できていないようです。

Bean が内部で DefaultBeanDefinitionDocumentReader (つまり <bean> タグ) によって標準的な方法で解析される場合、デコレータが適用されますが、カスタム パーサーが使用される場合、このコードは実行されません。私たちのパーサー実装では、単純なプロパティは parse メソッド内で parsePropertyElements() を手動で呼び出すことによって解析されますが、その時点で BeanDefinitionHolder の準備ができていないため、デコレータの解析を呼び出すのは困難です。

カスタム Bean パーサーに対してデコレーターが解析されるようにする正しい方法は何でしょうか?

現在のソリューションは、内部の独自のタグを明示的に検索して処理しますが、私には間違っているように見えます。

4

0 に答える 0