zoukankan      html  css  js  c++  java
  • Spring学习(十七)----- Spring自动代理创建者

    1. BeanNameAutoProxyCreator示例

    在此之前,必须手动创建一个代理bean(ProxyFactryBean)。

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
        <bean id="customerService" class="com.yiibai.customer.services.CustomerService">
            <property name="name" value="Yiibai Mook Kim" />
            <property name="url" value="http://www.yiibai.com" />
        </bean>
    
        <bean id="hijackAroundMethodBeanAdvice" class="com.yiibai.aop.HijackAroundMethod" />
    
        <bean id="customerServiceProxy" 
            class="org.springframework.aop.framework.ProxyFactoryBean">
    
            <property name="target" ref="customerService" />
    
            <property name="interceptorNames">
                <list>
                    <value>customerAdvisor</value>
                </list>
            </property>
        </bean>
    
        <bean id="customerAdvisor"
            class="org.springframework.aop.support.NameMatchMethodYiibaicutAdvisor">
            <property name="mappedName" value="printName" />
            <property name="advice" ref="hijackAroundMethodBeanAdvice" />
        </bean>
    </beans>
    XML

    使用代理名称“customerServiceProxy”来获得 bean。

    CustomerService cust = (CustomerService)appContext.getBean("customerServiceProxy");
    
    Java

    在自动代理机制,只需要创建一个的 BeanNameAutoProxyCreator,并包含所有你的bean(通过bean的名字,或正则表达式名)和“advisor” 作为一个单位。

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
        <bean id="customerService" class="com.yiibai.customer.services.CustomerService">
            <property name="name" value="Yiibai Mook Kim" />
            <property name="url" value="http://www.yiibai.com" />
        </bean>
    
        <bean id="hijackAroundMethodBeanAdvice" class="com.yiibai.aop.HijackAroundMethod" />
    
        <bean id="customerAdvisor"
            class="org.springframework.aop.support.NameMatchMethodYiibaicutAdvisor">
            <property name="mappedName" value="printName" />
            <property name="advice" ref="hijackAroundMethodBeanAdvice" />
        </bean>
    
        <bean
            class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
            <property name="beanNames">
                <list>
                    <value>*Service</value>
                </list>
            </property>
            <property name="interceptorNames">
                <list>
                    <value>customerAdvisor</value>
                </list>
            </property>
        </bean>
    </beans>
    XML

    现在,可以通过“CustomerService”的原始名称获取bean, 如果知道这个bean已经代理。

    CustomerService cust = (CustomerService)appContext.getBean("customerService");
    
    Java

    2. DefaultAdvisorAutoProxyCreator示例

    这个 DefaultAdvisorAutoProxyCreator 是非常强大的,如果有 bean 相关连,Spring会自动创建一个代理。

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
        <bean id="customerService" class="com.yiibai.customer.services.CustomerService">
            <property name="name" value="Yiibai Mook Kim" />
            <property name="url" value="http://www.yiibai.com" />
        </bean>
    
        <bean id="hijackAroundMethodBeanAdvice" class="com.yiibai.aop.HijackAroundMethod" />
    
        <bean id="customerAdvisor"
            class="org.springframework.aop.support.NameMatchMethodYiibaicutAdvisor">
            <property name="mappedName" value="printName" />
            <property name="advice" ref="hijackAroundMethodBeanAdvice" />
        </bean>
    
           <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />
    
    </beans>
    XML

    不用管使用什么代理方法, Spring 都会有最适合处理方式。

    下载代码 – http://pan.baidu.com/s/1pKdqtjt

    作者:逆舟
    https://www.cnblogs.com/zy-jiayou/
    本博客文章均为作者原创,转载请注明作者和原文链接。
  • 相关阅读:
    JavaScript原型详解
    jQuery插件开发全解析
    再谈JavaScript闭包及应用
    狗日的Javascript中的闭包
    UML的基本图(一)
    项目开发-树形层级结构中的数量统计
    不要再坑人啦!NSOperation才是苹果推荐使用的多线程技术!
    linux下查看文件内容cat,more,less
    cocos2d-x -- 渠道SDK【棱镜】接入(2)
    关于虚拟机装kali-linux的联网问题
  • 原文地址:https://www.cnblogs.com/zy-jiayou/p/7736584.html
Copyright © 2011-2022 走看看