spring3: Aspectj后置返回通知

AspectJ后置返回通知
本文介绍了一个使用AspectJ实现的后置返回通知的例子。该例子包括定义接口IHelloService2及其实现类HelloService2,配置AspectJ支持,并通过HelloAspect2类实现通知逻辑。最后通过测试程序验证了后置返回通知的功能。

Aspectj后置返回通知

接口:

package chapter1.server;

public interface IHelloService2 {
	public int sayAfterReturning(String param);
}

  

接口实现

package chapter1.service.impl;

import chapter1.server.IHelloService2;

public class HelloService2 implements IHelloService2 {

	public int sayAfterReturning(String param) {
		// TODO Auto-generated method stub
		System.out.println("============ say after returning:" + param);
		return 1;
	}

}

  

配置:

一定要加:<aop:aspectj-autoproxy/> 启动对Aspectj的支持

<aop:aspectj-autoproxy/>
<bean id="helloService" class="chapter1.service.impl.HelloService2" />
<bean id="aspect" class="chapter1.aop.HelloAspect2"/>

  

AOP切面:

一定要引入:org.aspectj.lang.annotation.Aspect; 否则不执行

package chapter1.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.AfterReturning;

@Aspect
public class HelloAspect2 {

	
	
	//方法一
	//通知
	@AfterReturning(	
			//value="execution(* chapter1..*.sayAdvisorBefore(java.lang.String)) and args(param)",
			value="execution(* chapter1..*.sayAfterReturning(..))",			
			argNames="retVal", 
			returning="retVal")
	public void afterReturningAdvice(Object retVal)
	{
		System.out.println("================= return after advice : " + retVal);
	}
	
	
	//方法二
	//定义切入点
	@Pointcut(value="execution(* chapter1..*.sayAfterReturning(java.lang.String) and args(param))", argNames="param")
	public void returnPointcut(String param) {}
	
	public void afterReturningAdvice2(Object retVal)
	{
		
	}
	
}

  

测试程序:

@Test
	public void testAspectAfterReturning()
	{
		ApplicationContext context = new ClassPathXmlApplicationContext("chapter1/aspectj2.xml");
		IHelloService2 hello = context.getBean("helloService", IHelloService2.class);
		hello.sayAfterReturning("hahah");
	}

  

结果:

============ say after returning:hahah
================= return after advice : 1

转载于:https://www.cnblogs.com/achengmu/p/8574911.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值