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
    评论
下面是Spring5的配置文件,该文件配置了Spring5 AOP中的通知,请分析代码并回答后面的问题。(10分) ‎ ​applicationContext.xml: ‎ ​① <?xml version="1.0" encoding="UTF-8"?> ‎ ​② <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" ‎ ​ "https://www.springframework.org/dtd/spring-beans-2.0.dtd" [ ‎ ​<!ENTITY contextInclude SYSTEM ‎ ​ "org/springframework/web/context/WEB-INF/contextInclude.xml">]> ‎ ​③ <beans> ‎ ​④  <bean id="BeforeAdvice" ‎ ​⑤  class="adviceexample.GettingBeforeAdvice"></bean> ‎ ​⑥  <bean id="AfterAdvice" class="adviceexample.GettingAfterAdvice"></bean> ‎ ​⑦  <bean id="proxy" ‎ ​⑧  class="org.springframework.aop.framework.ProxyFactoryBean"> ‎ ​⑨  <property name="proxyInterfaces" ‎ ​⑩  value="adviceexample.Reception"></property> ‎ ​⑪  <property name="interceptorNames"> ‎ ​⑫  <list> ‎ ​⑬  <value>BeforeAdvice</value> ‎ ​⑭  <value>AfterAdvice</value> ‎ ​⑮  </list> ‎ ​⑯  </property> ‎ ​⑰  <property name="target" ref="target"></property> ‎ ​⑱  </bean> ‎ ​⑲  <bean id="target" class="adviceexample.ConcreteReception"></bean> ‎ ​⑳ </beans> ‎ ​(1)上面文件配置了的两种通知是用来做什么的(4分) ‎ ​(2)上面文件配置了代理工厂对象proxy,该对象有三个属性,依次是代理接口,通知和目标对象,其中,代理接口是什么?(2分) ‎ ​(3)分析上面代码说明AOP主要包含哪些内容?(4分)
05-11

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值