spring aop注解样例,使用简单
代码如下:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* 拦截器:对controller层进行拦截
* @author zx
* @date 2017-03-10
*/
@Aspect
@Component
public class ControllerIntercerptor {
private static final Logger logger = LoggerFactory.getLogger(ControllerIntercerptor.class);
/**
* 定义拦截规则:拦截com.zx.controller包下面的所有类中,有@RequestMapping注解的方法。
*/
@Pointcut("execution(* com.zx.controller..*(..)) and @annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void controllerMethodPointcut(){
}
@Before("controllerMethodPointcut()")
public void before(JoinPoint joinPoint)
{
System.out.println(joinPoint.getSignature().getName());
System.out.println("================@before(controllerMethodPointcut())");
}
@After("controllerMethodPointcut()")
public void After(JoinPoint joinPoint)
{
System.out.println(joinPoint.getSignature().getName());
System.out.println("================@After(controllerMethodPointcut())");
}
@Around("controllerMethodPointcut()")
public Object Around(ProceedingJoinPoint joinPoint) throws Throwable
{
System.out.println(joinPoint.getSignature().getName());
System.out.println("================@Around(controllerMethodPointcut())");
return joinPoint.proceed();
}
/**
* 拦截器具体实现
* @param pjp
* @return JsonResult(被拦截方法的执行结果,或需要登录的错误提示。)
*/
@Around("controllerMethodPointcut()") //指定拦截器规则;也可以直接把“execution(* com.zx.........)”写进这里
public Object Interceptor(ProceedingJoinPoint pjp){
MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod(); //获取被拦截的方法
String methodName = method.getName(); //获取被拦截的方法名
//Set<Object> allParams = new LinkedHashSet<>(); //保存所有请求参数,用于输出到日志中
System.out.println("================@Around(controllerMethodPointcut())");
Object result = null;
Object[] args = pjp.getArgs();
for(Object arg : args){
System.out.println(arg);
}
// 一切正常的情况下,继续执行被拦截的方法
try {
result = pjp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
return result;
}
}
项目地址:https://github.com/zhangxia1030/spring-boot-example
分享到:
相关推荐
spring自定义注解样例
关于AOP注解前置通知、后置通知、返回通知、异常通知的注解注释及应用
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、可在现有源码上快速进行功能扩展 4、spring boot,mybatis,druid,spring aop的使用
Spring AOP 的几种使用及相关配置
Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,AOP的原理就是java的动态代理机制
使用Spring的注解方式实现AOP的细节
spring aop 通过注解实现的项目,这只是一个简单的例子。运行环境也简单。
SpringAOP注解方式.zip,SpringAOP注解特棒例子
演示了spring对aop的支持,包括注解方式、基于xml方式。
spring AOP,注解方式的实现! 内部方法的拦截
spring中aop的注解的使用开发,包括bean注解.rar
spring aop样例.方便对springaop的了解和快速学习
SpringAOP的注解配置完成切面的编程,完成execution,annotation两种表达式的实例Ddemo
spring 注解 aop demo spring 注解 aop demo spring 注解 aop demo spring 注解 aop demo
最近使用了springAOP编程,文档里面包含了springAOP的代码示例及详细注释说明,使用的是注解配置模式
spring aop注解所需要的三个jar包,aspectjrt.jar,aspectjweaver.jar,aopalliance.jar
spring aop jar 包
描述一下Spring AOP? 在Spring AOP中关注点(concern)和横切关注点(cross-cutting concern)有什么不同? AOP有哪些可用的实现? Spring中有哪些不同的通知类型(advice types)? Spring AOP 代理是什么? 引介...
spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop