1.先定义一个配置类
//先自定义配置类
@Configuration
@ComponentScan("woc")
//表示配置类中有aop注解
@EnableAspectJAutoProxy
public class conperi {
}
2.写一个接口a
public interface a {
void a1();
}
3.写一个b类去实现a
@Controller
public class b implements a {
@Override
public void a1() {
System.out.println("ddd");
}
}
4.写一 c类aop去插入b类 a1方法中
package woc.huanrao;
import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import java.lang.invoke.MethodHandleInfo;
//让此类是当aop处理
@Aspect
//变成spring控制的bean
@Component
public class c {
//切入点 描述 b类中a1的方法,也可以描述接口
@Pointcut("execution(void woc.huanrao.b.a1())")
private void jui(){}
//通知
@Around("jui()") //环绕通知
//如果切入的 是方法是数据类型的,void为object类型或者 数据类型
public void ddd(ProceedingJoinPoint a) throws Throwable {
System.out.println("dasdasdasdas");
System.out.println(System.currentTimeMillis());
//进行分割环绕前后
Object o = a.proceed();
System.out.println(System.currentTimeMillis());
//如果切入的是数据类型的方法 则必须有返回值 return
//return o;
}
}