posts - 63,comments - 71,trackbacks - 0

研究了老半天的
public class PtabTranjnlNote extends HibernateDBMaintain implements AfterReturningAdvice{


 public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
  // TODO Auto-generated method stub

    System.out.println("======22222222===PtabTranjnlNote===afterReturning===Channel=["+tsmLogMap.get("Channel")+"]");
}

}

确不知道 Channel 的值是怎么得到的,郁闷了个老半天啊


在applicationContext.xml里面看到
<!-- 如果有多个BizProcess的对象需要代理,我们在Spring配置中为每一个Bean都配置一个代理,那么配置文件的维护就成了麻烦。
        解决多bean需要代理
       为此,Spring提供了比较方便的方法解决这个问题,比如BeanNameAutoProxyCreator、
       DefaultAdviceAutoProxyCreator和metadata autoproxying。
       我们采用了BeanNameAutoProxyCreator,因为他比较直观和简单 --> 
    <bean id="operateAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
           <property name="proxyTargetClass">
               <value>true</value>
           </property>
        <property name="beanNames">
           <list>
             <!-- 交易日志bean *Manager -->
              <value>*Manager</value>             
           </list>
        </property>
        <property name="interceptorNames">
         <list>
           <!-- value>creditAdvice</value>
           <value>financeAdvice</value -->
           <value>midAdvice</value>
           <value>acctAdvice</value>
           <value>queryAdvice</value>
           <value>transAdvice</value>
         </list>
        </property>
    </bean>

的定义,然后找到

<!-- 中间业务 -->
    <bean id="midAdvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">     
         <property name="advice" ref="ptabTranjnlNote"/>
         <property name="patterns">
           <value>.*doMid.*</value>
         </property>
    </bean>

<!-- 中间业务 -->
    <bean id="midAdvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">     
         <property name="advice" ref="ptabTranjnlNote"/>
         <property name="patterns">
           <value>.*doMid.*</value>
         </property>
    </bean>

同时也找到了 doMid*的方法,但是就是找不到在哪里传了这个参数进去,

睡了个懒觉,想了想 ,是不是原来拦截的方法的参数的参数就是afterReturning里面的参数呢
 
找到了调用doMid方法的地方,传了Channel 进去,还真是这么回事,成功了

老啦 ,这么简单问题研究了我3小时

posted on 2007-05-10 14:14 还没想好名 阅读(1301) 评论(0)  编辑  收藏 所属分类: 技术

只有注册用户登录后才能发表评论。


网站导航: