spring aop问题?
伪代码:
@Subject //aop注解
public void onMessage() {
//通过ThreadLocal获取当前主题
Subject subject = req.get();
//some
}
```
@Before("messagePoint()")
public void setContext(JoinPoint jp) {
MethodSignature signature = (MethodSignature) jp.getSignature();
Method method = signature.getMethod();
Object[] arguments = jp.getArgs();
for (Object argument : arguments) {
if (argument instanceof MessageDTO) {
MessageDTO e = (MessageDTO) argument;
try (UserContext ctx = new UserContext(e)) {
//调用onMessage()方法
method.invoke(object, arguments);
}
}
}
}
有一个问题: 在before里面会通过反射调用一次`omMessage()`方法,执行完before后又会执行一次omMessage(). 有什么好办法解决执行一次没? 之所以设计成这样是实现了`AutoCloseable close()方法`依靠它的特性自动remove threadlocal.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论