一导入依赖
org.aspectj aspectjweaver1.9.4
二,创建接口和实现类(实现方式一)
package com.aop01.service;
public interface ServiceUser {
void add();
void insert();
void update();
void query();
}
package com.aop01.service;
public class ServiceUserImpl implements ServiceUser {
@Override
public void add() {
System.out.println("添加成功");
}
@Override
public void insert() {
System.out.println("删除成功");
}
@Override
public void update() {
System.out.println("修改成功");
}
@Override
public void query() {
System.out.println("查看成功");
}
}
三,设置日志
1,前置
package com.aop01.log;
import org.springframework.aop.MethodBeforeAdvice;
import java.lang.reflect.Method;
public class log implements MethodBeforeAdvice {
@Override
public void before(Method method, Object[] objects, Object args) throws Throwable {
System.out.println( args.getClass().getName() + "的" + method.getName() + "方法被执行了");
}
}
method : 要执行对象的方法
通过:method.getName()获得
objects : 被调用的方法的参数
通过:args.getClass().getName()获得要调用的参数
1,后置
package com.aop01.log;
import org.springframework.aop.AfterReturningAdvice;
import java.lang.reflect.Method;
public class Afterlog implements AfterReturningAdvice {
@Override
public void afterReturning(Object o, Method method, Object[] args, Object target) throws Throwable {
System.out.println("执行了" + target.getClass().getName()+"的"+method.getName()+"方法,");
}
}
method被调用的方法 args 被调用的方法的对象的参数 target 被调用的目标对象
四,创建spring.xml
1,使用标签
2,是切入点
expression:表达式匹配要执行的方法
3
advice-ref执行方法 .
pointcut-ref切入点-->
测试
import com.aop01.service.ServiceUser;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MySpring {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
ServiceUser sevriceUserImpl = context.getBean("SevriceUserImpl", ServiceUser.class);
sevriceUserImpl.query();
}
}
二,1编写切入类(方法二)
package com.pojo;
public class Diy {
public void before(){
System.out.println("方法执行前");
}
public void after(){
System.out.println("方法执行后");
}
}
2,编写xml文件
自定义切面
ref:要切入的类
是切入点
要切入的方法
method="after"切入的方法名
pointcut-ref 要切入的地方



