Spring学习历程---使用注解方式入门AOP
2016-11-20 19:46
721 查看
使用AOP时,一般要先引入aop命名空间
xml里面加入<aop:aspect-autoproxy/>,启动对@AspectJ的支持.
注解举例:
@Pointcut("execution (* cn.itcast.service..*.*(..))")
private void anyMethod() {}//声明一个切入点
第一个*表示返回值任意 ,随后是包名 ,".."表示其所有子包,".*"表示所有方法,"(..)"表示任意参数。对这些方法进行拦截。
然后写上前置通知。 args(name)是获得传入参数。
pointcut="anyMethod()" , returning="res" 获得返回值。
throwing ="e" 可以获得抛出的异常。
@Aspect
public class MyInterceptor {
@Pointcut("execution (* com.springStudy.NaiveWaiter.*(..))")
private void anyMethod() {}
@Before("anyMethod()&&args(name)")
public void doAccessCheck(String name) {
System.out.println("前置通知"+name);
}
@AfterReturning(pointcut="anyMethod()",returning="res")
public void doAfterReturn(String res)
{
System.out.println("后置通知"+res);
}
@After("anyMethod()")
public void doAfter()
{
System.out.println("最终通知");
}
@AfterThrowing(pointcut="anyMethod()",throwing="e")
public void doAfterThrowing(Exception e)
{
System.out.println("异常通知"+e);
}
@Around("anyMethod()")
public Object doBasicProFiling(ProceedingJoinPoint pjp) throws Throwable
{
System.out.println("环绕前方法,进入方法");
Object o=pjp.proceed();
System.out.println("环绕后方法,退出方法");
return o;
}
}
xml里面加入<aop:aspect-autoproxy/>,启动对@AspectJ的支持.
注解举例:
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; /** * 切面 * */ @Aspect public class MyInterceptor { @Pointcut("execution (* cn.itcast.service.impl.PersonServiceBean.*(..))") private void anyMethod() {}//声明一个切入点 @Before("anyMethod() && args(name)") public void doAccessCheck(String name) { System.out.println("前置通知:"+ name); } @AfterReturning(pointcut="anyMethod()",returning="result") public void doAfterReturning(String result) { System.out.println("后置通知:"+ result); } @After("anyMethod()") public void doAfter() { System.out.println("最终通知"); } @AfterThrowing(pointcut="anyMethod()",throwing="e") public void doAfterThrowing(Exception e) { System.out.println("例外通知:"+ e); } @Around("anyMethod()") public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { //if(){//判断用户是否在权限 System.out.println("进入方法"); Object result = pjp.proceed(); System.out.println("退出方法"); //} return result; } }@Aspect声明一个切面
@Pointcut("execution (* cn.itcast.service..*.*(..))")
private void anyMethod() {}//声明一个切入点
第一个*表示返回值任意 ,随后是包名 ,".."表示其所有子包,".*"表示所有方法,"(..)"表示任意参数。对这些方法进行拦截。
然后写上前置通知。 args(name)是获得传入参数。
pointcut="anyMethod()" , returning="res" 获得返回值。
throwing ="e" 可以获得抛出的异常。
@Aspect
public class MyInterceptor {
@Pointcut("execution (* com.springStudy.NaiveWaiter.*(..))")
private void anyMethod() {}
@Before("anyMethod()&&args(name)")
public void doAccessCheck(String name) {
System.out.println("前置通知"+name);
}
@AfterReturning(pointcut="anyMethod()",returning="res")
public void doAfterReturn(String res)
{
System.out.println("后置通知"+res);
}
@After("anyMethod()")
public void doAfter()
{
System.out.println("最终通知");
}
@AfterThrowing(pointcut="anyMethod()",throwing="e")
public void doAfterThrowing(Exception e)
{
System.out.println("异常通知"+e);
}
@Around("anyMethod()")
public Object doBasicProFiling(ProceedingJoinPoint pjp) throws Throwable
{
System.out.println("环绕前方法,进入方法");
Object o=pjp.proceed();
System.out.println("环绕后方法,退出方法");
return o;
}
}
相关文章推荐
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP的细节)
- Spring学习笔记(14)----使用Spring的注解方式实现AOP
- (9) 使用Spring的注解方式实现AOP入门 以及 细节
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- 使用Spring的注解方式实现AOP入门
- AOP之Spring使用注解方式实现AOP(入门)
- spring框架的学习(五)——Spring使用AspectJ进行AOP的开发:注解方式
- spring学习(四):AOP注解方式
- spring 4.0 AOP (使用AspectJ的注解方式 的aop实现)简单实例
- Spring4:基于注解的方式来使用 AOP
- spring 4.0 AOP (使用AspectJ的注解方式 的aop实现)简单实例
- Spring使用Aspectj注解的方式来配置AOP
- Spring5.0.4 AOP 使用AspectJ方式自动代理注解(@EnableAspectJAutoProxy)
- Spring系列之 (十):AOP实现方式(二):使用AspectJ的注解方式
- 纯java 使用spring的注解方式AOP
- Spring中AOP使用——注解方式
- Spring使用AspectJ进行AOP的开发:注解方式
- 使用Spring的注解方式实现AOP
- SpringAOP使用入门,如何对自定义的注解进行切面编程