Реальный бизнес-кейс для замены пружинного метода? - PullRequest
0 голосов
/ 11 ноября 2008

Контейнер Spring IoC дает вам возможность замены метода компонента. Может ли кто-нибудь привести пример использования этой функции в реальной жизни?

Я вижу, что это используется для адаптации старого унаследованного кода (без исходных текстов) для работы с вашим приложением. Но я думаю, что я бы рассмотрел написание класса адаптера с использованием унаследованного кода напрямую вместо подхода замены метода Spring.

Ответы [ 2 ]

1 голос
/ 11 ноября 2008

Как сказано в документации, это не "обычно полезная" функциональность.

В этом случае может оказаться полезным изменить функциональность стороннего метода (у вас не обязательно есть источник) конечного класса, то есть класса, функциональность которого нельзя изменить или расширить с помощью наследования.

Полагаю, это все равно будет чем-то вроде взлома:)

0 голосов
/ 11 ноября 2008

Теперь, используя весенний 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...