<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
@Configuration
@ComponentScan("com.ving")
public class AopConfig {
}
////////////////////////////////////////////////
@Component
public class IndexDao {
public void query(){
System.out.println("dao----query");
}
}
////////////////////////////////////////////////
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(AopConfig.class);
annotationConfigApplicationContext.start();
IndexDao bean = annotationConfigApplicationContext.getBean(IndexDao.class);
bean.query();
}
}
dao----query
/**
*
* 切面
* 一定要给spring 管理
*/
@Component
@Aspect
public class VingAspectJ {
/**
* 切点
* 为什么切点要声明在一个方法上?目的是为了将注解写在上面而已
* pointcut是连接点的集合(就是方法的集合)
*/
@Pointcut("execution(* com.ving.dao.*.*(..))")
public void pointCut(){
}
/**
* 通知---》配置切点
*/
@After("com.ving.config.VingAspectJ.pointCut()")
public void after(){
System.out.println("after");
}
@Before("com.ving.config.VingAspectJ.pointCut()")
public void before(){
System.out.println("before");
}
}