当前位置: 代码迷 >> 综合 >> aspectj - 环绕通知
  详细解决方案

aspectj - 环绕通知

热度:12   发布时间:2023-12-14 01:10:46.0

先导入需要的jar包

1.编写切点类,也就是被拦截的

/*** 切点* @author BarryLee* @2018年11月13日@下午11:22:52*/
public class Demo {public void test1() {System.out.println("hello aspectj .. ");}
}

2.环绕通知

/*** 环绕通知* @author BarryLee* @2018年11月13日@下午11:23:21*/
public class MyAround {public Object myAround(ProceedingJoinPoint point) throws Throwable {System.out.println("前置 .. ");Object returnVal = point.proceed();//放行System.out.println("后置 .. ");return returnVal;}
}

3.applicationContext.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "><!-- aspectj方式实现环绕通知 --><bean class="cn.bl.testAOP2.MyAround" id="myAround"></bean><bean class="cn.bl.testAOP2.Demo" id="demo1"></bean><!-- 切面=切点+通知 --><aop:config><aop:aspect ref="myAround"><!-- 切点,要拦截什么 --><aop:pointcut expression="execution(* cn.bl.testAOP2.Demo.test1() )" id="mypoint"/><!-- 指定为环绕通知,拦截mypoint,拦截的时候要执行myAround方法 --><aop:around pointcut-ref="mypoint" method="myAround"/></aop:aspect></aop:config></beans> 

4.测试

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 测试* @author BarryLee* @2018年11月13日@下午11:23:08*/
public class TestDemo {public static void main(String[] args) {@SuppressWarnings("resource")ApplicationContext context = new ClassPathXmlApplicationContext("cn/bl/testAOP2/applicationContext.xml");Demo demo = context.getBean("demo1",Demo.class);demo.test1();}/*前置 .. hello aspectj .. 后置 .. 	*/
}