个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaweb
石可破也,而不可夺坚;丹可磨也,而不可夺赤。
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjweaverartifactId>
<version>1.9.4version>
dependency>
public interface BookDao {
void save();
void update();
}
@Repository
public class BookDaoImpl implements BookDao {
public void save() {
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println("book dao save...");
}
long end = System.currentTimeMillis();
System.out.println("共消耗时间:" + (end - start) + "ms");
}
public void update() {
System.out.println("bookDao update...");
}
public class MyAdvice {
@Before()
public void method() {
System.out.println(System.currentTimeMillis());
}
}
public class MyAdvice {
@Pointcut("execution(void com.practice.dao.BookDao.update())")
private void pt(){}
}
public class MyAdvice {
@Pointcut("execution(void com.practice.dao.BookDao.update())")
private void pt(){}
@Before("pt()")
public void method() {
System.out.println(System.currentTimeMillis());
}
}
@Component
@Aspect
public class MyAdvice {
@Pointcut("execution(void com.practice.dao.BookDao.update())")
private void pt(){}
@Before("pt()")
public void method() {
System.out.println(System.currentTimeMillis());
}
}
@Configuration
@ComponentScan("com.practice")
@EnableAspectJAutoProxy
public class SpringConfig {
}
切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类/接口名.方法名(参数)异常名)
*
:单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现
execution(public * com.practice.*.UserService.find*(*))
com.practice
包下的任意包中的UserService类或接口中所有find开头的带有一个参数的方法..
:多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写execution(public User com..UserService.findById(..))