spring 拦截器

    <bean id="entityDao" parent="baseTransactionProxy">
        <property name="target">
            <bean
                class="org.beangle.orm.hibernate.HibernateEntityDao"
                autowire="byName">
            </bean>
        </property>
    </bean>
    
     <bean id="afterPrinter" class="com.ekingstar.eams.interceptor.AfterSaveOrUpdate" />
     <!-- 通知器或切面 -->  
     <bean id="methodPointcutAdvisor"  class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">  
          <property name="advice">  
                  <ref local="afterPrinter"/>  
          </property>  
          <property name="patterns">  
               <list>  
                    <value>.*saveOrUpdate</value>  
                    <value>.*get</value>  
               </list>  
          </property>  
     </bean>  
     <!-- 自动代理 -->  
     <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
          <property name="beanNames">  
                   <value>entityDao</value>
          </property>  
          <property name="interceptorNames">  
               <list>  
                    <value>methodPointcutAdvisor</value>  
               </list>  
          </property>  
     </bean>  


拦截器类:

package com.ekingstar.eams.interceptor;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import org.springframework.aop.AfterReturningAdvice;

import com.ekingstar.eams.teach.lesson.CourseGradeState;
import com.ekingstar.eams.teach.lesson.model.CourseGradeStateBean;

public class AfterSaveOrUpdate implements AfterReturningAdvice {
    static{
        System.out.println("============>");
    }
    /**
     * rObj:调用方法返回的对象;
     * method:调用的方法;
     * args:调用方法所传的参数数组;
     * cObj:调用的类对象;
     */
    public void afterReturning(Object returnValue, Method method, Object[] args, Object target) {
        try {
            // 由于数组是 object 因此使用 instanceof 不起作用取出来都是数组的对象类型,因此这里使用强制转换,捕获异常
            List<CourseGradeState> states = new ArrayList<CourseGradeState>();
//            for (Object argArray : args) {
//                for (Object arg : (Object[]) argArray) {
//                    if (arg instanceof CourseGradeStateBean) {
//                        CourseGradeStateBean gradeState = (CourseGradeStateBean) arg;
//                        states.add(gradeState);
//                    }
//                }
//            }
            // 如果非state 类,直接返回
//            if (states.size() == 0) {
//                return;
//            }
            String content = "";
            for (CourseGradeState state : states) {
                content = content + "任务序号:" + state.getLesson().getNo() + " 课程序号:" + state.getLesson().getCourse().getCode() + " 状态:" + state.getStatus() + "</br>";
            }
//            EntityDao entityDao = (EntityDao) target;
//            LogSaveOrUpdate log = Model.newInstance(LogSaveOrUpdate.class);
            Throwable ex = new Throwable();
            StackTraceElement[] stackElements = ex.getStackTrace();
            System.out.println(stackElements[5].getClassName());
            System.out.println(stackElements[5].getFileName());
            System.out.println(stackElements[5].getLineNumber());
            System.out.println(stackElements[5].getMethodName());
//            log.setOrderAction(stackElements[5].getClassName());
//            log.setUserId(SecurityUtils.getUserId().toString());
//            log.setUserName(SecurityUtils.getUsername());
//            log.setCreatedAt(new Date());
//            log.setContent(content);
//            entityDao.save(log);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值