aspectj - 环绕通知_spring

aspectj - 环绕通知_System_02

先导入需要的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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://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 ..
后置 ..
*/
}