Spring的AOP使用实例

本文详细介绍了如何使用Spring AOP进行日志记录,包括方法执行前后记录日志、记录方法运行时间,以及增加检查订单功能。通过Java配置和XML配置相结合,展示了AOP在不同场景的应用,包括before、after和around通知。示例代码涵盖了切面定义、切入点表达式和方法参数获取。完整代码可在GitHub找到。
摘要由CSDN通过智能技术生成

本文主要通过一些实例,一步步逐渐完善一个AOP的例子:
1.简单的AOP日志实现-某方法之前的前后记录日志;
2.简单的AOP日志实现-需要记录方法的运行时间;
3.简单的AOP日志实现-增加检查订单功能;

以上这些例子的AOP相关的配置均使用XML配置实现,bean的配置均使用Java代码实现,稍后会给出AOP注解配置的实现方案。

1.某方法之前的前后记录日志

(1)entity

蛋糕类:仅仅有name属性和get、set方法。

package spring.ch3.topic1;

/**
 * Created by louyuting on 17/1/20.
 * 注入属性,记得属性必须要写setter方法  不然就会抛出异常,注入失败.
 */
public class Cake {
   
    private String name = "";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

烤炉类:

package spring.ch3.topic1;

/**
 * Created by louyuting on 17/1/21.
 */
public class Oven {
   
    private String name = "";

    @Override
    public String toString() {
        return name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

厨师类:厨师类里面有使用的烤炉类以及做的蛋糕类。厨师类里面只加了一个额外方法,就是制作一个蛋糕的方法。

package spring.ch3.topic1;

/**
 * Created by louyuting on 17/1/20.
 */
public class Chief {
   
    private static int index = 0;

    public static int getIndex() {
        return index;
    }

    public static void setIndex(int index) {
        Chief.index = index;
    }

    private Cake cake = null;
    private Oven oven = null;

    private final int id = index++;
    private String name = "";

    public Cake getCake() {
        return cake;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Oven getOven() {
        return oven;
    }

    public void setCake(Cake cake) {
        this.cake = cake;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setOven(Oven oven) {
        this.oven = oven;
    }

    public void makeOneCake() {
        System.out.println(getName() + " make " + getCake().getName());
    }
}

日志类:

package spring.ch3.topic1;

/**
 * Created by louyuting on 17/1/24.
 */
public class Log {
   
    public void washOven() {
        System.out.println(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值