`
wangxuliangboy
  • 浏览: 208477 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ProxyFactoryBean什么时候需要配置proxyTargetClass

阅读更多

spring ProxyFactoryBean什么时候需要配置proxyTargetClass

比如现在有这样一段代码:
<bean id="ttransactionDefinition" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="transactionAttributeSource">
            <ref bean="txAttributeSource" />
        </property>
</bean>

<bean id="test" parent="ttransactionDefinition">
 <property name="proxyTargetClass" value="true"></property>
 <property name="target">
  <bean class="com.alibaba.intl.biz.escrow.message.TestTram" />
 </property>
</bean>

<bean id ="testProxyCls" class="com.wolf.TestProxyClass">
 <property name="test" bean="test"/>
</bean>
proxyTargetClass需要配置的情况只有一种:
  当TestTram类有实现某个接口,而TestProxyClass类中配置的类对象是TestTram时(而不是TestTram实现的接口),这时候你需要配置proxyTargetClass=true
 
  如果TestTram没有实现某个接口,而TestProxyClass类中配置的类对象是TestTram,这个时候我们是不需要配置proxyTargetClass=true的.(使用cgilib来动态代理)
  如果TestTram实现某个接口, 而TestProxyClass类中配置的是TestTram实现的interface的话.那样我既不需要配置proxyInterface,也不需要配置proxyTargetClass

 
 为什么我们在没有配置proxyInterface情况下,去配置proxyTargetClass.因为spring会去拿到当前配置的target实现的所有接口,然后通过动态代理出类.
 
 可以看看spring的这段代码:(AbstractSingletonProxyFactoryBean类)
  if (this.proxyInterfaces != null) {
   proxyFactory.setInterfaces(this.proxyInterfaces);
  }
  else if (!isProxyTargetClass()) {
   // Rely on AOP infrastructure to tell us what interfaces to proxy.
   proxyFactory.setInterfaces(ClassUtils.getAllInterfacesForClass(targetSource.getTargetClass()));
  }
  this.proxy = getProxy(proxyFactory);

分享到:
评论
1 楼 agapple 2009-03-10  
写的真够绕的,这些spring手册都已经说的很清楚了!!

相关推荐

    Spring AOP 源码系列:ProxyFactoryBean

    NULL 博文链接:https://czj4451.iteye.com/blog/2051461

    SpringBootAopInterceptor:Spring Boot ProxyFactoryBean

    SpringBootAopInterceptor Spring Boot ProxyFactoryBean

    Spring实现AOP的四种方式

    1. 配置ProxyFactoryBean,显式地设置advisors, advice, target等(基于代理的AOP ) 2. 配置AutoProxyCreator,这种方式下,还是如以前一样使用定义的bean,但是从容器中获得的其实已经是代理对象 3. 通过来配置...

    spring-aop-ProxyFactoryBean 源码分析

    NULL 博文链接:https://wangxinchun.iteye.com/blog/2079585

    Spring基于ProxyFactoryBean创建AOP代理

    主要介绍了Spring基于ProxyFactoryBean创建AOP代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    spring aop代理列子

    package com.gc.aop下为:aop方式ProxyFactoryBean代理 package com.gc.aop下为:aop方式ProxyFactoryBean代理 package com.gc.autoproxy下为:aop方式自动代理 package com.gc.cglib下为:aop方式cglib代理 ...

    AOP 和 Aspect 注解切入 测试 Demo

    基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api 定义前、后置处理方法,并通过代理工厂类获取代理对象(代码或Xml配置实现) 2.ProxyFactoryBean 显式地设置 Advisors、Advice、Target等(基于代理...

    spring aop 实现源代码--xml and annotation(带lib包)

    &lt;bean id="messageSender" class="org.springframework.aop.framework.ProxyFactoryBean"&gt; 12. &lt;property name="proxyInterfaces" value="com.savage.aop.MessageSender"/&gt; 13. &lt;property name="target" ref=...

    Spring 自动代理创建器详细介绍及简单实例

    在经典的Spring Aop中,Spring提供了自动代理创建器(Aotu proxy creator),有了自动代理创建器,就不再需要使用ProxyFactoryBean手工地创建代理了。 接口Animal和Book:  package com.zzj.aop; public ...

    Spring

    class="org.springframework.aop.framework.ProxyFactoryBean"&gt; &lt;!--这里的必须要指定接口 --&gt; &lt;value&gt;org.nitpro.aop.BizInterface &lt;!--业务处理节点名称和拦截器名称必须都要定义, 必须将拦截器的对象...

    使用FactoryBean结合Jmock实现动态Mock类的注入

    FactoryBean:我们在使用Spring过程中一般都是使用基本的的配置,在Spring配置中,还有一种特殊的FactoryBean,这种bean,可以动态的帮我们创建我们需要的bean,如: ProxyFactoryBean,通用的用于获得AOP代理的工厂bean。...

    Spring 2.0 开发参考手册

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. ...

    《Java EE企业开发框架》 Spring AOP实验报告

    定义一个MyClass类(或接口),包括math()、english()和physics()方法,可以简单模拟输出:上数学课/英语课/物理课….,上每一门课之前先要执行check()方法查看课表和preparation()方法检查上课用品,上完后需要执行...

    spring-xmemcached

    &lt;bean id="cacheProxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean"&gt; &lt;value&gt;cacheBeforeAdvice &lt;value&gt;cacheAfterAdvice &lt;value&gt;cacheInterceptor&lt;/value&gt; ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用...

    spring in action英文版

     3.5 使用ProxyFactoryBean  3.6 自动代理  3.6.1 BeanNameAutoProxyCreator  3.6.2 DefaultAdvisorAutoProxyCreator  3.6.3 元数据自动代理  3.7 小结 第二部分 Spring在业务层的应用  第4章...

    Spring中文帮助文档

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”通知器 7.6. 简化代理定义 7.7. 使用...

    Spring API

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”通知器 7.6. 简化代理定义 7.7. 使用...

    spring chm文档

    7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. ...

    Spring in Action(第2版)中文版

    1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 2.1容纳你的bean 2.1.1...

Global site tag (gtag.js) - Google Analytics