您如何看待将业务逻辑放入 Spring interceptor/Advice?

What do you think about putting business logic into a Spring interceptor/Advice?

您如何看待将业务逻辑放入 Spring interceptor/Advice?这是一种不好的做法吗?

您会在拦截器中放入哪种业务逻辑?只是验证?

我所看到的是拦截器中的业务逻辑更难看到,因为没有清晰的方法调用链可供遵循。如果您使用域驱动设计,业务逻辑也应该位于域对象中。

提前致谢。

作为一般规则,AOP 拦截器应该用于横切关注点,而不是基本业务逻辑。我见过使用 AOP 的应用程序,并且一些开发人员对它们深信不疑。如果发现它们是调试和测试的噩梦。

它很快就变成了一个组合问题,找到相交的不同方面来组合以创建所需的用户行为。在业务逻辑调用中线性和显式的系统中确定业务逻辑要容易得多。

拦截器是一种可以插入调用流中的方法。这通常在方法(或 Web 请求)之前和之后执行。

拦截器的最大好处是它们为您提供了一种向业务方法添加功能而无需修改方法代码的方法。

我认为拦截器的目的不是拥有业务逻辑,而是进行预检查和 post 检查,以便您的业务逻辑以正确的方式执行。其中一些正在验证用户的输入,进行安全检查等