面向切面编程,代码如下:
@Aspect
public class ControllorAspectj {
@Pointcut("within(com.spring.test.action.*)")
public void doManagerActionClass() {
}
@Before("execution(public * * (..))")
public void getUser(JoinPoint jp) throws IOException {
System.out.println("任意公共方法的执行");
}
@Pointcut("execution(* do*(..))")
public void doMethod(){
}
@Before(value="com.spring.test.common.ControllorAspectj.doMethod() && target(bean)",argNames="bean")
public void beforeDo(JoinPoint jp,Object bean) throws Exception {
String sourceLocation=jp.getKind();
Signature signature=jp.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
method.invoke(jp.getTarget(),jp.getArgs());
System.out.println("方法名:"+method.getName());
System.out.println("任意以do开头的方法"+sourceLocation);
}
@Pointcut("within(com.spring.test..*)")
public void before3(){
System.out.println("test包以及他的子包");
}
@AfterThrowing(pointcut="com.spring.test.common.ControllorAspectj.before3()",throwing="ex")
public void afterThrows(JoinPoint jp,Throwable ex) {
ex.printStackTrace();
System.out.println("test包以及他的子包抛出的异常"+ex.getMessage());
}
@AfterReturning("this(com.spring.test.IBaseAction)")
public void afterReturn(){
System.out.println("after return,实现了IBaseAction");
}
}
注:任何通知方法可以将第一个参数定义为org.aspectj.lang.JoinPoint类型 (环绕通知需要定义第一个参数为ProceedingJoinPoint类型, 它是 JoinPoint 的一个子类)。
以上注意几点:
1、该类声明为@Aspect;
2、在spring配置文件中声明:
<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean id="controllerAspect"
class="com.spring.test.common.ControllorAspectj"/>
分享到:
相关推荐
Spring aspect 很好的 只要解压org.aspectj.zip 其他不要解压
NULL 博文链接:https://wandejun1012.iteye.com/blog/2278981
Spring+Aspect所需jars,包括Spring-aop、Spring-Aspect、aopalliance-1.0、Aspect Jweaver-1.8.7等包,个人学习时从各地凑出来的,送上资源免得各位大大们继续跟我一样还得花时间从各地一点一点地去凑这几个包。
项目中含有一整个springboot实现aop的功能,在拦截的方法形式上有两种一种是通过切点设置为拦截某个包路径下面的类中的所有方法;还有一种是基于某个自定义注解的.
Spring 2.5 Aspect-Oriented Programming source code zip
Spring初探 准备工作 构建Spring基础代码 Spring 基础语义 ... Aspect Oriented Programming AOP 概念 AOP in Spring Dynamic Proxy 与Spring AOP CGLib 与 Spring AOP AOP 应用 DAO Support Remoting
SPRING:aspect和advisor区别
Spring AOP 拦截器 Advisor Spring AOP 拦截器 Advisor
本篇文章主要介绍了详解Spring 基于 Aspect 注解的增强实现,非常具有实用价值,需要的朋友可以参考下
包含学习Spring AOP以及学习Spring Aspect J需要新增的jar包,需要的朋友可以下载哦!
Spring aop 配置 Spring aspect 配置 Spring advisor 配置 Spring pointcut 配置
Spring 2.5 Aspect-Oriented Programming
整理的Spring AOP Aspect切入点语法,老师整理的,2018.08.01最新版
主要介绍了springboot aspect通过@annotation进行拦截的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
NULL 博文链接:https://zw7534313.iteye.com/blog/2221200
You can download the examples described in this book from the following GitHub project:github.com/getting-started-with-spring/4thEditionThis book covers: - Spring Framework basics- Aspect-oriented ...
engineers, and developers that want be able to write applications in a more modular and concise way, without learning Aspect or using languages other than Java and frameworks other than Spring.
spring-aspects.jar spring-aspect.jar
1、@Aspect放在类头上,把这个类作为一个切面。 2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。 3、5种通知。 3.1、@Before,前置通知,放在方法头上。 3.2、@After,后置【finally】...