ProxyFactoryBean的属性传值问题(ref与value的使用)

<!-- 创建目标类 -->
<bean id="userServiceId" class="com.mjr.b_factory_bean.UserServiceImpl"></bean>
    

<!-- 创建切面类 -->   

<bean id="myAspectId" class="com.mjr.b_factory_bean.MyAspect"></bean>

 

<!-- 创建代理类
            使用工厂bean    FactoryBean,底层调用getObject()返回特殊bean
            ProxyFactoryBean 用于创建代理工厂bean,生成特殊代理对象
                interfaces:确定接口们
                    通过<array>可以设置多个值
                    只有一个值时,value=""
                target:确定目标类
                interceptorNames:通知切面类的名称,类型是String[],如果设置一个值value=""
                 optimize:强制使用cglib
                     <property name="optimize" value="true"></property>
             底层机制
                 如果目标类有接口,采用jdk动态代理
                 如果没有接口,采用cglib字节码增强
                 如果声明optimize = true,无论是否有接口,都采用cglib
     -->

<bean id="proxyServiceId" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="interfaces">
            <array>
                <value>com.mjr.b_factory_bean.UserService</value>
            </array>
        </property>
        <property name="target" ref="userServiceId"></property>
        <property name="interceptorNames"> <!-- value="myAspectId" -->
            <list><!--使用array-->
                <!-- 出错 -->
                <!-- <ref bean="myAspectId"/> -->
                <value>myAspectId</value>
            </list>
        </property>
        <property name="optimize" value="true"></property>
    </bean>

 

针对interceptorNames后面为什么使用value的解释:

 

proxyInterfaces(底层传值类型Class[])通过<array>可以设置多个值,只有一个值时,value=""

底层:

       proxyInterfaces-ProxyFactoryBean.setProxyInterfaces(Class[] proxyInterfaces)

                                                                                            //.xml文件中给不了class,只能给全限定名

target(底层传值类型Object target)

底层:

       target-Advised.setTarget(Object object)//Object所以使用ref传对象

interceptorNames:通知切面类的名称,类型是String[],如果设置一个值value=""

底层:

        interceptorNames-ProxyFactoryBean.setInterceptorNames(String[] interceptorNames)

所以interceptorNames后面使用value传值,如果是多个值,则加一个<array>或者<list>

 

       

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值