<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"); } }