追加するヘッダー値を取得してヘッダーに追加し、データベースに記録するカスタムヘッダーエンリッチャーが必要です。db-recording-header-enricher などのカスタム スプリング タグを作成して、ヘッダーをデータベースに記録することに関心がある場合は、header-enricher タグの代わりにそれを使用しようとしていました。
そして、これが私がこれまでに持っているものです:
カスタム要素 db-recorder-header-enricher が正しく構成されたカスタム Spring XML 名前空間があります。パーサーが正しく機能しているかどうかをテストするために使用しているテスト春統合 xml があります。デフォルトでトランスフォーマーとして取得される HeaderEnricher の代わりに、以下のカスタム パーサーを使用することを除いて、テストはテスト XML を正しくロードしています。
db-recording-header-enricher のプロセッサは次のようになります。
DbRecorderHeaderEnricherParser implements BeanDefinitionParser {
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
BeanDefinition beanDefinition = new StandardHeaderEnricherParser().parse(element, parserContext);
// Set the header Enricher processor to be my custom processor
// beanDefinition.setHeaderEnricherProcessor(dbRecordingHeaderEnricher);
return beanDefinition;
}
}
私が直面している問題はこれです:
上記のパーサー定義に基づいて、StandardHeaderEnricherParser を使用して xml を解析すると、DbRecordingHeaderEnricher をヘッダー エンリッチャーの解析用のトランスフォーマーとして関連付ける方法が見つかりません。StandardHeaderEnricherParser を拡張したとしても、以下のメソッドは最終的なものであるため、変換目的でカスタム パーサーを指定することはできないようです。
@Override
protected final String getTransformerClassName() {
return HeaderEnricher.class.getName();
}
カスタム パーサーでやりたいことは、ヘッダーの解析と、追加されたヘッダーのデータベースへのレコードの作成のために、カスタム ヘッダー エンリッチャー (HeaderEnricher クラスを拡張する) を関連付けることだけです。私が考えている方法でそれが不可能な場合、他にどのような選択肢がありますか? 変圧器で AOP/アドバイスを使用できますか?