spring aop 获取拦截类中的属性的值

最近搭建一个ssh的通用架子时,想做个通用日志的拦截方法,可以利用反射获取拦截类中的属性

不多说,上代码

日志类

public class MyLog {
	public void doBefore(JoinPoint jp) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
	Field f = jp.getTarget().getClass().getDeclaredField("username");//获取属性-->Field
 	f.setAccessible(true);//如果是私有的 先要设置可访问
	String user = (String) f.get(jp.getTarget());//获取值,这个get()方法重点是参数,参数是你要获取的类
	logStr = user + " 进行了" + jp.getTarget().getClass().getName() + " 类的 "+ jp.getSignature().getName()+" 方法开始执行 ";logger.info(logStr);}
	}
}





拦截类

 com.xxx.xxx.controller包下的ServerManagerController.java

 

public class ServerManagerController extends BaseAction{
	
	private String username = "";
	@Autowired

	/**
	 * 管理页面  
	 * @return
	 */
	@RequestMapping(value = "/toServerManager")
    public String toServerManager(){ 
		UserLogInfo user = (UserLogInfo)session.getAttribute("userLogInfo");
		this.username = user.getUsername();
        return "/jsp/examine/serverManager";
    }
}


spring-log.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:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:cache="http://www.springframework.org/schema/cache"  
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    					http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    					http://www.springframework.org/schema/context  
           				http://www.springframework.org/schema/context/spring-context.xsd
           				http://www.springframework.org/schema/tx  
           				http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
           				http://www.springframework.org/schema/aop  
           				http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
           				http://www.springframework.org/schema/mvc  
    					http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
    					http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">  
    
    
    <!--   
    	配置日志 使用Aop 记录日志    
    	注意:  
    	1). 此处proxy-target-class="true" 否则Action内的参数会被拦截掉,导致action内无法获得前台传递的参数   
    	2). Action需交给spring容器去管理  
	-->  
<aop:config expose-proxy="true" proxy-target-class="true">  
    <aop:aspect  id="aopRiZhiAspect" ref="myRiZhi">   
    <!-- 对哪些方法进行日志记录, 此处屏蔽action内的set get方法 -->  
           <aop:pointcut id="aopRiZhi" expression="(execution(* com.xxx.*.controller.*.*(..)) )" />   <!--  and (!execution(* com.hylanda.*.action.*.set*(..)) ) and (!execution(* com.hylanda.*.action.*.get*(..)) ) --> 
           <aop:before pointcut-ref="aopRiZhi" method="doBefore"/>    
           <aop:after pointcut-ref="aopRiZhi" method="doAfter"/>    
           <aop:around pointcut-ref="aopRiZhi" method="doAround"/>    
       </aop:aspect>  
</aop:config>  
  
  
<beans>  
    <bean id="myRiZhi" class="com.xxx.util.MyLog"></bean>   <!-- Aop日志类 -->  
</beans> 
    
    
</beans>  



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值