zoukankan      html  css  js  c++  java
  • Spring顾问

    什么是顾问?什么是通知?

    顾问:从字面意思来讲,只找固定的几个可以使用

    通知:所有的都可以用

    举例说明通知

    创建接口和实现类

    package cn.happy.day11ProxyFactory;
    
    /**
     * Created by Administrator on 2018/3/8.
     */
    public interface ISomeService {
        public void doSome();
        public void doAny();
    }
           
    
    
    
    package cn.happy.day11ProxyFactory;
    
    /**
     * Created by Administrator on 2018/3/8.
     */
    public class SomeServiceImpl implements ISomeService {
        public void doSome() {
            System.out.println("do Something");
        }
    
        public void doAny() {
            System.out.println("do Any");
        }
    }
    

      

    创建一个类

    package cn.happy.day11ProxyFactory;
    
    import org.springframework.aop.MethodBeforeAdvice;
    
    import java.lang.reflect.Method;
    
    /**
     * Created by Administrator on 2018/3/8.
     */
    public class BeforeAdvice implements MethodBeforeAdvice {
        public void before(Method method, Object[] objects, Object o) throws Throwable {
            System.out.println("我是通知");
        }
    }
    

      

    配置xml

      <!--目标类型-->
    <bean id="service" class="cn.happy.day11ProxyFactory.SomeServiceImpl"></bean>
    
        <!--增强-->
        <bean id="beforeAdvice" class="cn.happy.day11ProxyFactory.BeforeAdvice"></bean>
    
        <!--代理工厂Bean-->
        <bean id="Proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
            <!--引用目标类型-->
            <property name="target" ref="service"/>
            <property name="interceptorNames" value="beforeAdvice"/>
        </bean>
    

      

    测试结果

    通知是针对所有的方法进行

    顾问

    只需修改xml文件配置即可,

    <!--目标类型-->
    <bean id="service" class="cn.happy.day11ProxyFactory.SomeServiceImpl"></bean>
    
        <!--增强-->
        <bean id="beforeAdvice" class="cn.happy.day11ProxyFactory.BeforeAdvice"></bean>
    
        <!--顾问-->
        <bean id="advisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
            <property name="advice" ref="beforeAdvice"></property>
            <!--value:设置方法名,多个方法之间用逗号分隔-->
            <property name="mappedNames" value="doSome"></property>
        </bean>
    
        <!--代理工厂Bean-->
        <bean id="Proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
            <!--引用目标类型-->
            <property name="target" ref="service"/>
            <property name="interceptorNames" value="advisor"/> </bean>

      

    测试:

  • 相关阅读:
    Unity C# 反编译
    java finalize方法总结、GC执行finalize的过程
    Android性能调优篇之探索垃圾回收机制
    深入理解JVM(一)——JVM内存模型
    Android性能调优篇之探索JVM内存分配
    HashMap实现原理分析
    [干货]2017已来,最全面试总结——这些Android面试题你一定需要
    2017年最全的30个Android面试题,你将如何回答?
    Android2017进阶知识点、面试题及答案(精选版)
    Android2017最新面试题(3-5年经验个人面试经历)
  • 原文地址:https://www.cnblogs.com/xuchangqi1/p/8533690.html
Copyright © 2011-2022 走看看