0
点赞
收藏
分享

微信扫一扫

spring实现Aop

汤姆torn 2022-03-12 阅读 54

一、使用spring api接口

1.创建一个业务接口(简单的增删改查)

package com.service;

public interface IbookService {
    void add();
    void del();
    void upd();
    void find();



}

2. 实现接口

package com.service;

public class IbookServiceImpl implements IbookService {
    @Override
    public void add() {
        System.out.println("增加");
    }

    @Override
    public void del() {
        System.out.println("删除");
    }

    @Override
    public void upd() {
        System.out.println("修改");
    }

    @Override
    public void find() {
        System.out.println("查询");
    }
}

3.创建日志类实现MethodBeforeAdvice接口,然后实现里面的方法(前置通知)

package com.log;

import org.springframework.aop.MethodBeforeAdvice;

import java.lang.reflect.Method;

/**
 * @author 小宝的宝
 */
public class beforeLog implements MethodBeforeAdvice {
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println(target.getClass().getName()+"类"+method.getName()+"方法被执行");
    }
}

方法中有三个参数

method表示受执行的目标对象的方法、args表示参数、target表示目标对象

4.创建日志类实现AfterReturningAdvice接口,然后实现里面的方法(后置通知)

package com.log;

import org.springframework.aop.AfterReturningAdvice;

import java.lang.reflect.Method;

public class AfterLog implements AfterReturningAdvice {
    @Override
    public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
        System.out.println("执行了"+method.getName()+"方法"+"返回值为"+returnValue);
    }
}

相比与前置通知,后置通知中多了一个参数,returnValue 表示执行方法后的返回值

5.注册bean对象

 6.配置aop(需要导入aop约束)

 advice-ref指定哪个通知,pointcut-ref指向执行位置

7.测试

8.控制台结果 

二、自定义类

1.自己定义一个类(切面类 包含通知)

package com.myLog;

public class MyLog1 {

    public void before(){
        System.out.println("前置通知");
    }
    public void after(){
        System.out.println("后置通知");
    }
}

2.注册bean

目标更明确,就是将前置后置通知切入 execution定义的方法下,前置和后置通知在切面中

3.运行结果

举报

相关推荐

0 条评论