2016-05-27 11 views
0

Springで作成されていないオブジェクトにフィールドを手動でオートワイヤリングしています。私はこのオブジェクトにも適用されるべき2つのカスタムBeanPostProcessorsを持っています。しかし、ObjectFactoryはこれを処理していないようです。私は、次のスニペットを使用しています:Spring:手動で作成したBean上でBeanPostProcessorを実行してください。

ApplicationContext context = ...; 
context.getAutowireCapableBeanFactory().autowireBean(this); 

autowireフィールドが正しく処理されますが、私の2つのポストプロセッサは、ここで呼び出されません。

答えて

0

通常のBeanPostProcessorでは、別のオブジェクトを返すことによってBeanを置き換えることができます。既存のオブジェクトに対してこの動作を意味のある方法で実装する方法はありません。私は、Springが手動注入後にポストプロセッサーを呼び出さないことを選択した理由だと思います。

autowiringコードを調べると、InstantiationAwareBeanPostProcessorという拡張子があることがわかりました。追加のコールバックが用意されています。このコールバックは、手動自動ワイヤリング後に呼び出されます(たとえば、postProcessAfterInstantiation)。

0

AutowireCapableBeanFactory.autowireBeanは、プリプロセスまたはポストプロセッシングを省略して、すでに存在するBeanに対してオートワイヤリングを実行します。必要な場合は、代わりにAutowireCapableBeanFactory.autowireまたはAutowireCapableBeanFactory.createBeanを使用してください。

+0

私は注入を実行したいオブジェクトの作成を制御できないため、私は既存のオブジェクトに対してこのような動作をどのように達成できるのかということでした。 – SimonT

関連する問題