ProxyFactoryBean весной

Может ли кто-нибудь объяснить ProxyFactoryBean простыми словами? Я вижу, это цитируется во многих местах.

34
задан reevesy 20 August 2012 в 10:16
поделиться

2 ответа

ProxyFactoryBean используется для применения логики перехватчика к существующему целевому компоненту, чтобы при вызове методов этого компонента перехватчики выполнялись до и после вызова этого метода. Это пример аспектно-ориентированного программирования (АОП).

Лучше всего это пояснить на простом примере. Классическим вариантом использования АОП является применение кеширования к результату вызова метода. Это можно подключить с помощью ProxyFactoryBean следующим образом:

<bean id="targetService" class="com.x.MyClass"/>

<bean id="cachingInterceptor" class="com.x.MyCachingInterceptor"/>

<bean id="cachedService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref="targetService"/>
    <property name="interfaces">
        <list>              
            <value>com.x.MyService</value>
        </list>
    </property>
    <property name="interceptorNames">
        <list>
            <value>cachingInterceptor</value>
        </list>
    </property>
</bean>

У нас есть bean-компонент targetService типа com.x.MyClass , который реализует интерфейс ] com.x.MyService . У нас также есть компонент-перехватчик cachingInterceptor , который реализует интерфейс org.aopalliance.intercept.MethodInterceptor .

Эта конфигурация сгенерирует новый bean-компонент с именем cachedService , который реализует интерфейс MyService . Любые вызовы методов этого объекта сначала будут передаваться через метод invoke () объекта cachingInterceptor , который в этом случае будет искать результаты предыдущих вызовов методов во внутреннем кэше. . Он либо вернет кешированный результат, либо позволит вызову метода перейти к подходящему методу на targetService . Сам

targetService ничего об этом не знает, он совершенно не знает, что происходит вокруг АОП.

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

52
ответ дан 27 November 2019 в 16:52
поделиться

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

6
ответ дан 27 November 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: