本文实现不改动源代码,实现每个方法执行之前打印系统时间
save方法里面含有,我们让update也具备这个功能
public class BookDaoImpl implements BookDao {
public void save() {
//记录程序当前执行(开始时间)
Long startTime = System.currentTimeMillis();
System.out.println(startTime);
System.out.println("book dao save...");
}
public void update() {
System.out.println("book dao update...");
}
public void delete() {
System.out.println("book dao delete...");
}
public void select() {
System.out.println("book dao select...");
}
}
首先创建AOP的java文件,在以下例子代码中,
第一个注解@Component
用于加载文件
第二个注解@Aspect
告诉程序此bean对象作为切面使用
第三个切入点@Pointcut
用于执行在那个包下,执行那个方法,插入到连接点
第四个注解@Before
方法之前,里面绑定切入点和通知的关系,叫切面。下面执行的代码为通知,也是共性代码
思考,如果多个切入点怎么做?
@Component
@Aspect
public class MyAdvice {
//切入点,链接连接点
@Pointcut("execution(void com.itheima.dao.BookDao.update())")
private void pt(){};
// 2、共性代码,通知,将通知和切入点绑定,切面
@Before("pt()")
public void method(){
Long startTime = System.currentTimeMillis();
System.out.println(startTime);
}
}
网友评论