这是配置文件
@Configuration
@ComponentScan("com.work")
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class AopConfig {
}
AOP
@Component
@Aspect
public class AopDeamo {
/*声明切入点*/
@Pointcut("execution(* com.work.service.*.*(..))")
public void Pointcut(){
System.out.println("声明切入点");
}
@After("Pointcut()")
public void After(){
System.out.println("后置通知:方法之后执行");
}
@Before("Pointcut()")
public void Before(){
System.out.println("前置通知:方法之前执行");
}
@AfterReturning("Pointcut()")
public void AfterReturning(){
System.out.println("后置通知:方法之后执行ing");
}
}
被切的方法
package com.work.service.impl;
import org.springframework.stereotype.Service;
@Service
public class CglibServiceImpl {
public void eating() {
System.out.println("吃饭咯");
}
}
测试代码
AnnotationConfigApplicationContext a = new AnnotationConfigApplicationContext(AopConfig.class);
ProxyCGLIB proxyCGLIB =(ProxyCGLIB) a.getBean("proxyCGLIB");
CglibServiceImpl cglibServiceImpl=(CglibServiceImpl) a.getBean("cglibServiceImpl");
cglibServiceImpl.eating();
结果
CGLIB代理
吃饭咯
为什么不执行AOP呢?
PS:这个后来弄了一会 知道 定义切入点的通配符少了一个*