小工具知识网

当前位置: 首页 > 行业知识 > Spring AOP基于注解方式实现

行业知识

Spring AOP基于注解方式实现

2026-11-14 10:35:34 来源:互联网转载

1. 场景介绍

���前假设我们有一个计算器类,并要为其中的方法添加日志功能。

()

计算器类如代码所示:

public interface Calculator {        int add(int i, int j);        int sub(int i, int j);        int mul(int i, int j);        int p(int i, int j);    }
public class CalculatorPureImpl implements Calculator {        @Override    public int add(int i, int j) {            int result = i + j;            return result;    }        @Override    public int sub(int i, int j) {            int result = i - j;            return result;    }        @Override    public int mul(int i, int j) {            int result = i * j;            return result;    }        @Override    public int p(int i, int j) {            int result = i / j;            return result;    }}

可以看到,计算器类的实现类目前只有最核心的功能方法。

()

下面,我们就使用spring aop为其添加日志功能。

2. 实现

步骤如下所示:

2.1 加入依赖

    org.springframework    spring-aop    6.0.6    org.springframework    spring-aspects    6.0.6

2.2 声明切面类

import org.aspectj.lang.annotation.*;import org.springframework.stereotype.Component;// @Aspect表示这个类是一个切面类@Aspect// @Component注解保证这个切面类能够放入IOC容器@Componentpublic class LogAspect {            // @Before注解:声明当前方法是前置通知方法    // value属性:指定切入点表达式,由切入点表达式控制当前通知方法要作用在哪一个目标方法上    @Before(value = "execution(public int org.kkk.proxy.CalculatorPureImpl.add(int,int))")    public void printLogBeforeCore() {        System.out.println("[AOP前置通知] 方法开始了");    }        @AfterReturning(value = "execution(public int org.kkk.proxy.CalculatorPureImpl.add(int,int))")    public void printLogAfterSuccess() {        System.out.println("[AOP返回通知] 方法成功返回了");    }        @AfterThrowing(value = "execution(public int org.kkk.proxy.CalculatorPureImpl.add(int,int))")    public void printLogAfterException() {        System.out.println("[AOP异常通知] 方法抛异常了");    }        @After(value = "execution(public int org.kkk.proxy.CalculatorPureImpl.add(int,int))")    public void printLogFinallyEnd() {        System.out.println("[AOP后置通知] 方法最终结束了");    }    }

2.3 开启aspectj注解支持

@Configuration@ComponentScan(basePackages = "org.kkk")//作用等于  配置类上开启 Aspectj注解支持!@EnableAspectJAutoProxypublic class MyConfig {}

2.4 测试

@SpringJUnitConfig(value = {MyConfig.class})public class AopTest {    @Autowired    private Calculator calculator;    @Test    public void testCalculator(){        calculator.add(1,1);    }}

上一篇:蘑菇服务器怎么白嫖?

下一篇:揭秘外域下载秘籍,轻松获取资源大解密!