Spring AOP的两种实现方式

一、xml配置方式

1、jar包配置


            org.springframework
            spring-context
            ${spring.version}
        
        
            org.aspectj
            aspectjweaver
            1.8.9
        
        
            cglib
            cglib
            3.2.4
        

2、目标类

package com.demo.aop;

public class MyMath {

	//加
    public int add(int n1,int n2){
        int result=n1+n2;
        System.out.println(n1+"+"+n2+"="+result);
        return result;
    }
    
    //减
    public int sub(int n1,int n2){
        int result=n1-n2;
        System.out.println(n1+"-"+n2+"="+result);
        return result;
    }
    
    //乘
    public int mut(int n1,int n2){
        int result=n1*n2;
        System.out.println(n1+"X"+n2+"="+result);
        return result;
    }
    
    //除
    public int div(int n1,int n2){
        int result=n1/n2;
        System.out.println(n1+"/"+n2+"="+result);
        return result;
    }
	
}

3、通知到类

package com.demo.aop;


import org.aspectj.lang.JoinPoint;


public class Advices {
	public void before(JoinPoint jp){// JoinPoint 可以获取代理方法的参数,返回值,异常等信息
        System.out.println("----------前置通知----------");
        System.out.println(jp.getSignature().getName());
    }
    
    public void after(JoinPoint jp){
        System.out.println("----------最终通知----------");
    }
}

4、xml配置




       
    
     
    
    
    
    
    
    
          
        

二、注释方式

1、Jar包导入

同上

2、目标类

package com.demo.aopa;

import org.springframework.stereotype.Service;

@Service("math")
public class MyMath {

	//加
    public int add(int n1,int n2){
        int result=n1+n2;
        System.out.println(n1+"+"+n2+"="+result);
        return result;
    }
    
    //减
    public int sub(int n1,int n2){
        int result=n1-n2;
        System.out.println(n1+"-"+n2+"="+result);
        return result;
    }
    
    //乘
    public int mut(int n1,int n2){
        int result=n1*n2;
        System.out.println(n1+"X"+n2+"="+result);
        return result;
    }
    
    //除
    public int div(int n1,int n2){
        int result=n1/n2;
        System.out.println(n1+"/"+n2+"="+result);
        return result;
    }
	
}

3、通知类

package com.demo.aopa;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class Advices {
	
	final String DEF = "execution(* com.demo.aopa.MyMath.*(..))";
	
	@Before(DEF)
	public void before(JoinPoint jp){
        System.out.println("----------前置通知----------");
        System.out.println(jp.getSignature().getName());
    }
    
	@After(DEF)
    public void after(JoinPoint jp){
        System.out.println("----------最终通知----------");
    }
}

4、xml配置


        
        
        
       
   






你可能感兴趣的:(SpringMVC,SpringBoot)