浏览 3392 次
锁定老帖子 主题:Spring 可以迭代拦截么?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-17
public class UserManagerImpl implements UserManager { private static Log log = LogFactory.getLog(UserManagerImpl.class); public void saveUserProperty(long userId, String key, String value) throws StatusCodeException { UserProperty prop = userPropertyDAO.getUserProperty(userId, key, UserProperty.STATUS_ACTIVE); if (prop == null) { prop = new UserProperty(); prop.setUserId(userId); prop.setPropName(key); prop.setPropValue(value); } else { prop.setUpdateDate(Calendar.getInstance()); prop.setPropValue(value); } userPropertyDAO.saveUserProperty(prop); } public long addUserPropertyValue(long userId, String key, long value) throws StatusCodeException { long sum = 0; String propVaule = getUserProperty(userId, key); if (propVaule != null) { sum = StringUtils.parseLong(propVaule, 0); } sum = sum + value; saveUserProperty(userId, key, String.valueOf(sum)); return sum; } } 注意:addUserPropertyValue 中调用了 saveUserProperty public UserStatisticAdvice() { } public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable { if (target == null)return; String methodName = method.getName(); log.debug("advice running...method="+methodName); if (target instanceof UserManager) { if ("addUserPropertyValue".equals(methodName)) { long userId = ((Long)args[0]).longValue(); String key = (String)args[1]; if (userId > 0 && key != null){ ... } } if ("saveUserProperty".equals(methodName)) { long userId = ((Long)args[0]).longValue(); String key = (String)args[1]; String value = (String)args[2]; if (userId > 0 && key != null && value != null){ ... } } } } } 按照我的理解, 当 UserManger 的 addUserPropertyValue 被调用时,拦截器应该被拦截到, 由于被拦截后, UserManger 又调用了 saveUserProperty,故又会被拦截器拦截到。 但是跟踪结果,却发现 只有 addUserPropertyValue 被调用时,Spring 进行了拦截。而后续的 saveUserProperty 却没有被拦截到。 请问,我希望两个函数都被拦截到,有办法解决我的需求么? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-09-18
这种解决方法很好?
|
|
返回顶楼 | |