`
garrincha
  • 浏览: 12951 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

7Spring AOP盗梦空间之二——获得返回值AfterReturnning

阅读更多
书接上回
上一个例子展示的只是在日本人的做梦的外围做一点事情,并没有窃取到日本人的机密。这里LEO要窃取日本人的密码

1、修改Person类
package com.spring.service;

import org.springframework.stereotype.Component;


@Component
public class Person {

	public int haveNap() 
	{
		System.out.println(this.getClass().getName());
		System.out.println("打个盹,想想我的银行密码");
		return 123;
	}
}

这里做了一个新的方法,小睡。日本人小睡一会,顺便想想自己保险柜的密码,而LEO就是要窃取这个密码123

2、修改一下上一个例子中LeoIncept类
package com.spring.aop;

import java.lang.reflect.Method;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.aop.AfterReturningAdvice;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LeoIncept{
	
	@AfterReturning(returning="arg0",pointcut ="execution(public int com.spring.service.Person.haveNap())")
	public void stealPassword(Object arg0) throws Throwable {
		System.out.println("password is "+arg0.toString());
	}
}

这里我们定义了一个stealPassword的方法从返回值中窃取密码。使用AfterReturning可以查看返回值,但是不能修改返回值。

3、xml文件不变
4、测试类不变
5、测试结果
com.spring.service.Person
打个盹,想想我的银行密码
password is 123
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics