15.Spring 面向切面编程

Spring 面向切面编程

AOP 是 Spring 框架除了 IOC 之外的另一个核心概念。

  AOP:Aspect Oriented Programming,意为面向切面编程。这是一个新的概念,但是我们知道 Java 是面向对象编程(OOP:Object Oriented Programming)的,指将所有的一切都看作对象,通过对象与对象之间相互作用来解决问题。AOP 是对 OOP 的一个补充,是在另外一个维度抽象出来的对象,具体是指程序在运行时,动态地将非业务代码切入业务代码中,从而实现代码的解耦合,将非业务代码抽象成一个对象,对该对象进行编程,这就是面向切面编程。

在这里插入图片描述

AOP 的优点:

  1. 降低模块之间的耦合度;
  2. 提高了代码的可维护性;
  3. 提高了代码的复用性;
  4. 集中分开管理非业务代码和业务代码,逻辑更加清晰;
  5. 业务代码更加简洁纯粹,没有其他代码的影响;

1. 面向切面编程思想

  介绍概念过于抽象和空泛,不易于理解,下面我们通过一个实例来说明,慢慢引出 AOP 的动态代理机制以及实际开发中如何使用面向切面编程。

1、创建一个计算器接口 Cal,定义四个方法:加、减、乘、除;

public interface Cal {
   
   
    public int add(int num1,int num2);
    public int sub(int num1,int num2);
    public int mul(int num1,int num2);
    public int div(int num1,int num2);
}

2、创建接口实现类 CalImpl,并且实现上面定义的四个方法;

public class CalImpl implements Cal{
   
   

    public int add(int num1, int num2) {
   
   
        int result = num1 + num2;
        return result;
    }

    public int sub(int num1, int num2) {
   
   
        int result = num1 - num2;
        return result;
    }

    public int mul(int num1, int num2) {
   
   
        int result = num1 * num2;
        return result;
    }

    public int div(int num1, int num2) {
   
   
        int result = num1 / num2;
        return result;
    }
}

3、在测试方法中创建 CalImpl 对象,调用方法;

public class Test3 {
   
   
    public static void main(String[] args) {
   
   
        Cal cal = new CalImpl();
        cal.add(12,4); //16
        cal.sub(12,4); //8
        cal.mul(12,4); //48
        cal.div(12,4); //3
    }
}

以上这段代码很简单,现在想要添加功能:在每一个方法执行的同时,打印日志信息,即该方法的参数列表和该方法的计算结果

这个需求很简单,只需要在每一个方法体中,运算执行之前打印参数列表,运行之后打印计算结果即可,因此,对代码做出如下修改:

public class CalImpl implements Cal{
   
   

    public int add(int num1, int num2) {
   
   
        System.out.println("add方法的参数是["+num1+","+num2+"]" );
        int result = num1 + num2;
        System.out.println("add方法的结果是"+result);
        return result;
    }

    public int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值