Spring を使用する場合、アノテーションと依存関係の注入を通じて依存関係を管理するのが一般的です。ただし、Spring コンテキストの外で自己インスタンス化されたオブジェクトがある状況が発生する可能性があります。このような場合、Spring のインジェクション機能をどのように活用できますか?
次のシナリオを考えてみましょう:
<code class="java">public class MyClass { @Autowired private AnotherBean anotherBean; } ... MyClass obj = new MyClass();</code>
インスタンス化しました。 MyClass を手動で使用しますが、anotherBean のようにその依存関係を注入したいと考えています。どうやって対処しますか?
Spring には AutowireCapableBeanFactory インターフェイスが用意されており、これにより、自己インスタンス化されたオブジェクトを含む任意のオブジェクトに依存関係を注入できます。 BeanFactory にアクセスするには:
<code class="java">private @Autowired AutowireCapableBeanFactory beanFactory;</code>
beanFactory を使用すると、オブジェクトに依存関係を注入できます。
<code class="java">public void doStuff() { MyBean obj = new MyBean(); beanFactory.autowireBean(obj); // obj will now have its dependencies autowired. }</code>
その後autowireBean を呼び出すと、インスタンス化されたオブジェクトに依存関係が挿入され、使用できるようになります。このアプローチにより、手動で作成したオブジェクトに対しても Spring の依存関係注入機能を活用できます。
以上がSpring で自己インスタンス化されたオブジェクトに依存関係を注入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。