zoukankan      html  css  js  c++  java
  • spring aop自动代理注解配置之二

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:aop="http://www.springframework.org/schema/aop"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> 
            
            <context:component-scan base-package="com.zr.utils"></context:component-scan>
            
            <!-- <aop:aspectj-autoproxy ></aop:aspectj-autoproxy> -->
            <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
    </beans>
    package com.zr.utils;
    
    
    import org.springframework.stereotype.Component;
    
    
    @Component("comp")
    public class Calculate implements Compute{
        
        public int div(int num1,int num2){
            System.out.println("除法");
            return num1/num2;
        }
    }
    package com.zr.utils;
    
    
    
    import java.util.Arrays;
    
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.annotation.After;
    import org.aspectj.lang.annotation.AfterReturning;
    import org.aspectj.lang.annotation.AfterThrowing;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    
    
    @Aspect
    @Component("testAspect")
    public class TestAspect {
        
        @Pointcut("execution(* com.zr.utils.Calculate.*(..))")
        private void testPointcut(){}
        
        //第一个 * 代表任意修饰符及任意返回值,其中 .. 匹配任意数量的参数.
        @Before("testPointcut()")
        public void methodBefore(JoinPoint joinpoint){
            System.out.println("执行方法:"+joinpoint.getSignature().getName()+"之前"+" 参数:"+Arrays.asList(joinpoint.getArgs()));
        }
        //第一个 * 代表public修饰符下任意返回值,第一个 * 代表com.zr.utils.Calculate路径下的任意方法
        @After(value="testPointcut()")
        public void methodAfter(JoinPoint joinpoint) {
            System.out.println("执行方法:"+joinpoint.getSignature().getName()+"之后");
        }
        
        //匹配第一个参数为 int 类型的方法, .. 匹配任意数量任意类型的参数
        @AfterReturning(pointcut="testPointcut()",returning="result")
        public void methodAfterRunning(JoinPoint joinpoint,Object result){
            System.out.println("返回结果之后执行"+",返回结果:"+result);
        }
        //匹配参数类型为 int, int 类型的方法.
        @AfterThrowing(pointcut="testPointcut()",throwing="exception")
        public void methodAfterThrowing(JoinPoint joinPoint,Exception exception){
            System.out.println("异常通知, 在方法抛出异常之后执行"+",异常日志:"+exception);
        }
    }
    package com.zr.utils;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestAop {
        
        public static void main(String[] args) {
            
            ApplicationContext ctc = new ClassPathXmlApplicationContext("context.xml");
            
            /*Calculate calculate = (Calculate) ctc.getBean("comp");*/
            Calculate c = (Calculate) ctc.getBean("comp");
            int result = c.div(10, 2);
            
            
        }
    }
  • 相关阅读:
    C语言-if语句
    C语言-表达式
    C语言-基础
    Java for LeetCode 187 Repeated DNA Sequences
    Java for LeetCode 179 Largest Number
    Java for LeetCode 174 Dungeon Game
    Java for LeetCode 173 Binary Search Tree Iterator
    Java for LeetCode 172 Factorial Trailing Zeroes
    Java for LeetCode 171 Excel Sheet Column Number
    Java for LeetCode 169 Majority Element
  • 原文地址:https://www.cnblogs.com/lantu1989/p/6295639.html
Copyright © 2011-2022 走看看