package me.test.anno; import org.springframework.aop.PointcutAdvisor; import org.springframework.context.support.ClassPathXmlApplicationContext; public class AnnoMain { /** * 使用 @Aspectj 注解示例。 */ public static void main(String[] args) { ClassPathXmlApplicationContext appCtx = new ClassPathXmlApplicationContext("application-context-anno.xml"); appCtx.registerShutdownHook(); int count = appCtx.getBeanDefinitionCount(); System.out.printf("spring managed %d beans:%n", count); String[] beanNames = appCtx.getBeanDefinitionNames(); for (String beanName : beanNames) { Object bean = appCtx.getBean(beanName); System.out.printf("\tbean name : %s%n", beanName); System.out.printf("\tgetClass() : %s%n", bean.getClass()); System.out.printf("\ttoString() : %s%n", bean); if (bean instanceof PointcutAdvisor) { PointcutAdvisor advisor = (PointcutAdvisor) bean; System.out.printf("\tpointcut : %s%n", advisor.getPointcut()); System.out.printf("\tadvice : %s%n", advisor.getAdvice()); } System.out.println(); } System.out.println("-------------"); Runnable taskA = (Runnable) appCtx.getBean("taskA"); taskA.run(); System.out.println("-------------"); Runnable taskB = (Runnable) appCtx.getBean("taskB"); taskB.run(); System.out.println("-------------"); appCtx.close(); } /* * output: * ------------- * taskA is running. * ------------- * 111111111111 :{a=a1, b=b1} * taskB is running. * 222222222222 :{a=a1, b=b1} * ------------- */ }