您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

春季的ProxyFactoryBean

春季的ProxyFactoryBean

Proxyfactorybean用于将拦截器逻辑应用于现有目标Bean,以便在调用该Bean上的方法时,拦截器在该方法调用之前和之后执行。这是面向方面的编程(AOP)的示例。

最好用一个简单的例子来解释。AOP的经典用例是将缓存应用于方法调用的结果。可以使用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>

我们有一个targetService类型为bean 的类型com.x.MyClass,它实现了接口com.x.MyService。我们还有一个名为拦截器的BeancachingInterceptor,它实现了接口org.aopalliance.intercept.MethodInterceptor

此配置将生成一个名为的新bean cachedService,该bean 实现该MyService接口。任何对该对象上方法调用都将首先通过该cachingInterceptor对象的invoke()方法传递,在这种情况下,该方法将在其内部缓存中查找先前方法调用的结果。它将返回缓存的结果,或允许方法调用继续进行到上的适当方法targetService

targetService 本身对此一无所知,它完全不知道所有这些AOP正在进行的事情。

Proxyfactorybean 由于各种原因(例如,远程存根,事务管理),它在Spring内部被大量使用以生成代理,但是它也非常适合在应用程序逻辑中使用。

其他 2022/1/1 18:29:38 有529人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶