Service下是不是好多都aop内自调用了,都走不到增强方法

avatar

// 删除用户
@Override
public void deleteUser(Integer id) {
// 删除用户的通知
notificationService.deleteByUserId(id);
// 删除用户的收藏
collectService.deleteByUserId(id);
// 删除用户发的评论
commentService.deleteByUserId(id);
// 删除用户发的帖子
topicService.deleteByUserId(id);
// 删除redis里的缓存
User user = this.selectById(id);
this.delRedisUser(user);
// 删除用户本身
userMapper.deleteById(id);
}

好多都是直接调用的类内的方法
12 条评论
avatar
tomoya92 发布于 9 个月前
  0  

什么意思?

avatar
YinTianBo 发布于 9 个月前
  1  

@tomoya92 就是比如UserService内的deleteUser()方法 里面调用的selectById() 是走不到从缓存里取的那一步的 没生成代理对象 我把this改成((IUserService) AopContext.currentProxy()) 之后就好了

avatar
tomoya92 发布于 9 个月前
  1  

用aop确实会这样,我开发的时候也碰到过,所以尽量避免了一些在方法内调用被代理的方法

avatar
YinTianBo 发布于 9 个月前
  0  

@tomoya92 哦哦 那就是这块本身就是不会操作redis的是吗 我还以为是我漏看了哪里 学习了 多谢~~~

avatar
tomoya92 发布于 9 个月前
  0  

deleteUser() 这个方法在 UserServiceHook 里没有添加切入点,所以这个方法不会被aop代理

不过在 deleteUser() 方法里调用了 deleteRedisUser() 方法,deleteRedisUser()这个方法是会进aop处理的

avatar
YinTianBo 发布于 9 个月前
  0  

@tomoya92 麻烦问下 websocket这个包下的几个类的作用 还有需要的技术

avatar
tomoya92 发布于 9 个月前
  0  

@YinTianBo 作用就是可以不用刷新页面就可以获取到你现在有哪些未读消息,以及别人回复了你的帖子后,也可以收到消息

avatar
YinTianBo 发布于 8 个月前
  0  

请问你在解决跨域的时候为什么只放行了/api/** 啊? 是因为后台不需要做前后端分离吗

avatar
tomoya92 发布于 8 个月前
  0  

@YinTianBo 是的

avatar
YinTianBo 发布于 8 个月前
  0  

请问下标签是在哪操作的啊 没找到能创建标签的位置啊 标签的作用是什么呢

avatar
tomoya92 发布于 8 个月前
  0  

@YinTianBo 后台编辑帖子的地方有

avatar
h00478161 发布于 4 个月前
  0  

@YinTianBo 是的吗

添加一条评论 请尽量发布对他人有帮助的评论

登录后可发布评论

登录 | Github登录