Spring IoC コンテナーは、Bean のメソッドを置き換えるオプションを提供します。誰かがこの機能を使用して実際の問題を解決する実際の例を提供できますか?
これは、古いレガシ コード (ソースなし) をアプリで動作するように適応させるために使用されていることがわかります。しかし、Spring メソッド置換アプローチの代わりに、レガシー コードを直接使用してアダプター クラスを作成することを検討すると思います。
Spring IoC コンテナーは、Bean のメソッドを置き換えるオプションを提供します。誰かがこの機能を使用して実際の問題を解決する実際の例を提供できますか?
これは、古いレガシ コード (ソースなし) をアプリで動作するように適応させるために使用されていることがわかります。しかし、Spring メソッド置換アプローチの代わりに、レガシー コードを直接使用してアダプター クラスを作成することを検討すると思います。
ドキュメントにあるように、「一般的に役立つ」機能ではありません。
ただし、最終クラスのサードパーティメソッド (必ずしもソースを持っている必要はありません) の機能を変更する場合に便利な場合があります。つまり、機能を継承によって変更または拡張できないものです。
それでもハックのようなものになると思います:)
spring IoC を使用して、構成ファイルを変更するだけで、Lucene アナライザーを必要なものに変更できるようになりました。
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file.properties</value>
</list>
</property>
</bean>
<bean id="DocumentAnalyzer" class="${lucene.document_analyzer}">
</bean>
<bean id="QueryAnalyzer" class="${lucene.query_analyzer}">
</bean>
<bean id="IndexSearcher" class="org.apache.lucene.search.IndexSearcher" scope="prototype">
<constructor-arg>
<value>${lucene.repository_path}</value>
</constructor-arg>
</bean>
そしてコードで:
Analyzer analyzer = (Analyzer) BeanLoader.getFactory().getBean("DocumentAnalyzer");