如果你看了上一篇文章,你会发现Spring本身做的多好,不用我们在写神马代理类,一切都给我们定义好了
//@Aspect
public class AopInterceptor
{
//@Pointcut("execution(public * com.jzh.daoimp.*.*(..))")
public void anyMethod()
{
System.out.println("声明一个切入点");
}
//@Before("anyMethod()&&args(username)")
public void doAccessCheck()
{
System.out.println("定义前置通知...");
}
//@AfterReturning(pointcut="anyMethod()",returning="relvalue")
public void doAfterReturning(){
System.out.println("定义后置通知...");
}
//@After("anyMethod()")
public void doAfter(){
System.out.println("定义最终通知...");
}
//@AfterThrowing(pointcut="anyMethod()",throwing="e")//定义异常通知(当所拦截的方法出现异常时)
public void doAfterThrowing(){
System.out.println("定义异常通知...");
}
//@Around("anyMethod()")//定义环绕通知
public Object doBasicProfiing(ProceedingJoinPoint pjp) throws Throwable{
//if(){//判断用户是否有权限
System.out.print("进入方法");
Object result = pjp.proceed(); //此方法是必须
System.out.println("退出方法");
//}
return result;
}
/*//@Pointcut("execution(public * com.jzh.daoimp.*.*(..))")
public void anyMethod()
{
System.out.println("声明一个切入点");
}
//@Before("anyMethod()&&args(username)")
public void doAccessCheck(String username)
{
System.out.println("定义前置通知...并传参数"+username);
}
//@AfterReturning(pointcut="anyMethod()",returning="relvalue")
public void doAfterReturning(String relvalue){
System.out.println("定义后置通知...执行返回String类型的方法"+relvalue);
}
//@After("anyMethod()")
public void doAfter(){
System.out.println("定义最终通知");
}
//@AfterThrowing(pointcut="anyMethod()",throwing="e")//定义异常通知(当所拦截的方法出现异常时)
public void doAfterThrowing(Exception e){
}
//@Around("anyMethod()")//定义环绕通知
public Object doBasicProfiing(ProceedingJoinPoint pjp) throws Throwable{
//if(){//判断用户是否有权限
System.out.print("进入方法");
Object result = pjp.proceed(); //此方法是必须
System.out.println("退出方法");
//}
return result;
} */
}
如果你想用注解只需要把<!-- <aop:aspectj-autoproxy/>-->打开,其他aop标签注释掉。
<context:annotation-config/>
<context:component-scan base-package="com.jzh"/>
<!-- <aop:aspectj-autoproxy/>-->
<bean id="aop" class="com.jzh.aop.AopInterceptor"></bean>
<bean id="userDao" class="com.jzh.daoimp.UserDaoImp"></bean>
<aop:config>
<aop:aspect id="aopInterceptor" ref="aop">
<aop:pointcut expression="execution(public * com.jzh.daoimp.*.*(..))" id="mycut"/>
<aop:before method="doAccessCheck" pointcut-ref="mycut" />
<aop:after-returning method="doAfterReturning" pointcut-ref="mycut"/>
<aop:after method="doAfter" pointcut-ref="mycut"/>
<aop:after-throwing method="doAfterThrowing" pointcut-ref="mycut"/>
<aop:around method="doBasicProfiing" pointcut-ref="mycut"/>
</aop:aspect>
</aop:config>
</beans>