使用aop
首先需要 配置 aop头部
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" ---- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> ---- </beans>
Spring提供了两种切面声明方式。
1.基于XML配置方式声明切面。
<bean id="orderservice" class="com.yq1012.service.OrderServiceBean"/> <bean id="log" class="com.yq1012.service.LogPrint"/>
2.基于注解方式声明切面。
@Aspect public class LogPrint { @Pointcut("execution(* com.yq1012.service..*.*(..))") private void anyMethod() {}//声明一个切入点 @Before("anyMethod() && args(userName)")//定义前置通知 public void doAccessCheck(String userName) { } @AfterReturning(pointcut="anyMethod()",returning="revalue")//定义后置通知 public void doReturnCheck(String revalue) { } @AfterThrowing(pointcut="anyMethod()", throwing="ex")//定义例外通知 public void doExceptionAction(Exception ex) { } @After("anyMethod()")//定义最终通知 public void doReleaseAction() { } @Around("anyMethod()")//环绕通知 public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { return pjp.proceed(); } }