gpt4 book ai didi

java - 根据相应的输入 channel 适当存储通知

转载 作者:行者123 更新时间:2023-12-01 05:37:57 25 4
gpt4 key购买 nike

我遇到以下问题。在我的应用程序中,每个用户都可以通过 Web 客户端以及电子邮件执行操作。每个操作( Controller 类中的方法)都必须在外部键值存储中隐式存储通知(我正在使用 Redis)此外,如果操作是通过电子邮件执行的,则必须通知执行者有关状态的信息也通过电子邮件发送操作(成功/失败)。我遇到的主要问题是如何以最大程度的关注点分离来设计整个结构。例如,我不希望 Controller 方法本身执行任何有关存储通知/发送响应电子邮件的操作。

最初我想使用 AOP,并简单地用 @Action("actionType") 装饰我的方法,不幸的是我还需要知道发送者是谁。据我所知,我无法在运行时为注释属性赋值,所以我不得不考虑另一种方法。

第二种方法是使用“Around”拦截器来停止方法的执行,获取当前用户(从 session 范围的 userService 中),但同样,这仅适用于 Web Controller ,因为邮件处理类是无状态的,并且不知道诸如 currentUser 之类的概念(我可以获取发件人的唯一方法是通过每次收到新邮件时提供的电子邮件参数)

我想,最简单的方法是从每个需要通知的方法(在 Web 请求 Controller 和邮件处理器中)显式调用通知服务,但同样,这会导致方法知道有点太多了。

有什么建议吗?

最佳答案

我会坚持使用 AOP 方法,但我会让各个方面共享 ThreadLocal它保存用户信息,并由捕获电子邮件传入的方面进行初始化。这样您就可以在不更改应用程序代码的情况下实现整个逻辑。

顺便说一句,这个问题问得好。

关于java - 根据相应的输入 channel 适当存储通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com