Spring的AOP----从入门到精通(2)

本篇文章,结合上一个代码实例,来使用感受一下Spring的AOP真正的作用。

作为一个入门的小demo,这里我们使用的所有方法都不涉及传参问题。步骤可以分为如下:
① 将目标类和切面类(封装了通知方法的类)加入到IOC容器中。
② 告诉Spring到底哪个是切面类。使用@Aspect注解。
③ 告诉Spring,切面类里面的每一个方法,都是何时何地运行。
(1)将目标类和切面类加入到IOC容器中。

/*
首先创建一个接口,这也是jdk底层动态代理传入的接口值照应
*/
public interface Calculator {
    void add();
}

package com.cn.impl;
/*
实现接口
使用@Service注解,将这个类加入到容器中
*/
import com.cn.service.Calculator;
import org.springframework.stereotype.Service;

@Service
public class Calculatorimpl implements Calculator {
    public void add(){
        System.out.println("正在使用add方法");
    }
}

package com.cn.util;
/*
切面类,使用@Commponent注解,将这个类加入到容器中
*/
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class Logutils {

    @Before("execution(public void com.cn.service.Calculator.add())")
    public void beforerLog(){
        System.out.println("[前置通知]使用add方法完毕");
    }

    @After("execution(public void com.cn.service.Calculator.add())")
    public void afterLog(){
        System.out.println("[后置通知]使用add方法完毕");
    }

    @AfterReturning("execution(public void com.cn.service.Calculator.add())")
    public void returnLog(){
        System.out.println("[正常返回通知]使用add方法完毕");
    }

    @AfterThrowing("execution(public void com.cn.service.Calculator.add())")
    public void throwLog(){
        System.out.println("[异常通知]使用add方法完毕");
    }
}

(2) 告诉Spring到底哪个是切面类。使用@Aspect注解。
如上代码所示,在切面类中使用了@Aspect注解
(3)告诉Spring,切面类里面的每一个方法,都是何时何地运行。
分别使用了@Before、@After、@AfterReturning、@AfterThrowing,四个注解对应不同的时刻,使用表达式,绑定对应方法。
这时候在xml文件中开启ioc注解扫描和aop的切面代理即可

   <!--开启IOC注解扫描-->
    <context:component-scan base-package="com.cn"></context:component-scan>
    <!--启动aop切面代理-->
    <aop:aspectj-autoproxy/>

运行结果如下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值