Spring AOP的两种方式实现

1、注解方式

(1)切面类

@Aspect
public class AspectAnnotation {
	
	@Pointcut("execution(void aop.annotation.service.impl.StudentServiceImpl.addStudent(..))")
	public void addStudent() {
		
	}

	@Before("addStudent()")
	public void before() {
		System.out.println("使用注解操作:前置通知");
	}
	
	@After("addStudent()")
	public void after() {
		System.out.println("使用注解操作:后置通知");
	}
	
	@AfterThrowing("addStudent()")
	public void afterThrowing() {
		System.out.println("使用注解操作:异常通知");
	}
	
	@AfterReturning("addStudent()")
	public void afterReturning() {
		System.out.println("使用注解操作:返回通知");
	}
}

(2)配置Bean

  • Java配置方式
/**
 *	Java方式配置Bean
 */
@Configuration
@EnableAspectJAutoProxy
@ComponentScan("aop.annotation.*")
public class JavaConfigBean {

	//使用@Bean获取切面了的实例
	@Bean
	public AspectAnnotation getAspectAnnotation() {
		return new AspectAnnotation();
	}
}
  • XML配置方式


	
	
	

	
	
	
	
		
	
	
	
	
	
	

(3)测试

public class TestAopAnnotation {
	
	/**
	 * 使用注解操作
	 */
	@SuppressWarnings("resource")
	@Test
	public void TestAspect() {
		
		ApplicationContext ctx = new AnnotationConfigApplicationContext(JavaConfigBean.class);
		
//		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContextAOPAnnotation.xml");
		
		 StudentService ss = (StudentService) ctx.getBean(StudentService.class);
		 Student student = new Student();
		 student.setStudentId(16999);
		 student.setName("兆光");
		 
		 //添加学生
		 ss.addStudent(student);
	}
	
}

(4)结果

Spring AOP的两种方式实现_第1张图片

2、XML方式

(1)切面类

public class AspectXml {
	public void before() {
		System.out.println("使用切面类来操作:前置通知");
	}
	
	public void after() {
		System.out.println("使用切面类来操作:后置通知");
	}
	
	public void afterThrowing() {
		System.out.println("使用切面类来操作:异常通知");
	}
	
	public void afterReturning() {
		System.out.println("使用切面类来操作:返回通知");
	}
}

(2)XML配置文件:applicationContext.xml





	
	
	
	
		
	
	
	
	
	
	
	
		
		
			
			
			
			
			
			
			
			
		
	
	

(3)测试

public class TestAopXml {

	@Test
	public void TestXML() {
		 @SuppressWarnings("resource")
		ApplicationContext c = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		 StudentService ss = (StudentService) c.getBean("sutdentService");
		 Student student = new Student();
		 student.setStudentId(16999);
		 student.setName("兆光");
		 
		 //添加学生
		 ss.addStudent(student);
		 
		 //查询学生
//		 ss.selectStudent();
	}
}

(4)结果

Spring AOP的两种方式实现_第2张图片

 

你可能感兴趣的:(Java-Spring)