切面如下package com.oa.aop;
public class AopClass {
public void GetUnderling(final String username){
......}
}
切入点:package com.oa.person.dao.Impl;
public class UserDaoImpl{ public boolean userLogin(String name, String password) {
.....
}

配置如下:<bean name="userDao" class="com.oa.person.dao.Impl.UserDaoImpl">
</bean><bean name="aopClass" class="com.oa.aop.AopClass">
</bean><aop:config>
<aop:aspect id="underling" ref="aopClass">
<aop:pointcut expression="execution(* com.oa.person.dao.Impl.UserDaoImpl.userLogin(String,..)) and args(username,..)" id="login"/>
<aop:after-returning method="GetUnderling"
arg-names="username" pointcut-ref="login" />
</aop:aspect>
</aop:config>
为什么执行完userLogin以后切面不执行呢,少配置什么了吗?

解决方案 »

  1.   

    换这个试试:execution(public * com.oa.person.dao.Impl.UserDaoImpl.userLogin(..)) & args(username,..)
      

  2.   


    XML里逻辑与不能用&吧,不过换成and还是不行
      

  3.   

    应该是工作的,我的就是这样工作,不过我是用的spring 3.0,切面是用在annotation里的,从来没有在配置文件中用过,不知道有什么不一样。哦,对了,我是用的&&,而不是&,刚才大错了,我用的应该是execution(public * com.oa.person.dao.Impl.UserDaoImpl.userLogin(..)) && args(username,..)
      

  4.   

    或者你将返回值boolean换成Boolean试试,我知道切面判断的时候是把参数或返回值当成Object的,如果是值说不定会有影响,试试看吧