(Spring)注解的通知类型

1、通知类型

     *   @Before                     ---  前置通知

     *   @AfterReturning        ---  后置通知

     *   @Around                    ---  环绕通知(目标对象默认不执行,需要手动执行)

     *   @After                        ---  最终通知

     *   @AfterThrowing         ---  异常抛出通知


2、配置通用的切入点

     *   使用 @Pointcut 定义通用的切入点

/**
 * 自定义切入点
 */
@Pointcut(value="execution(public * com.jadan.demo1.CustomerDaoImpl.save())")
public void fn() {}

     最终通知:

/**
 * 注解方式的切面类
 */
@Aspect
public class MyAspectAnno {
	/**
	 * 自定义切入点
	 */
	@Pointcut(value="execution(public * com.jadan.demo1.CustomerDaoImpl.save())")
	public void fn() {}
	
	/**
	 * 最终通知:方法执行成功或者出现异常,都会执行
	 */
	@After(value="MyAspectAnno.fn()")
	public void after() {
		System.out.println("最终通知...");
	}
}

     环绕通知:

/**
 * 注解方式的切面类
 */
@Aspect
public class MyAspectAnno {
	/**
	 * 自定义切入点
	 */
	@Pointcut(value="execution(public * com.jadan.demo1.CustomerDaoImpl.save())")
	public void fn() {}

	/**
	 * 环绕通知
	 */
	@Around(value="MyAspectAnno.fn()")
	public void around(ProceedingJoinPoint joinPoint) {
		System.out.println("环绕通知Start...");
		try {
			// 让目标对象的方法执行,因为默认环绕通知是不执行目标方法的
			joinPoint.proceed();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		System.out.println("环绕通知End...");
	}
}


下一篇:Spring框架的JDBC模板技术

猜你喜欢

转载自blog.csdn.net/jonez/article/details/80472179
今日推荐