第一步,在config配置类中注入aop切面配置
@EnableAspectJAutoProxy //开启aop切面
第二步,创建AOP的方法类。
如图所示,我在Aop包下创建了AopMethod的Aop操作类。
第三步,创建service层,用于测试Aop操作类。
如图所示,创建service接口层和impl实现类层。
service层:
public interface dao {
public int save();
}
impl层:
@Service
public class daoimpl implements dao {
@Override
public int save() {
System.out.println("save");
return 100;
}
}
第四步,书写Aop操作类。
Aop操作类中,需注入切入点,即Pointcut,代码如下:
@Pointcut("execution(* com.Aop.service.dao.save())")
private void ms() {
}
execution(* com.Aop.service.dao.save() 就是选择某个方法注入切面aop
Aop中有三种主要通知方式,分别为前置通知--@Before(""),后置通知--@After(""),环绕通知@Around(""),
这里我们选择Aop中的环绕通知,即Around,代码如下:
@Around("ms()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("Aop在方法执行前");
Object proceed=pjp.proceed();
System.out.println("Aop在方法执行后");
return proceed;
}
第五步,测试。
创建app启动类,如图所示。
启动类代码如下:
public class app {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(com.config.SpringConfig.class);
dao dao = ctx.getBean(dao.class);
System.out.println(dao.save());
}
}
测试结果: