0

这更像是一个设计问题。我的项目结构是这样的——我有十几个前端类、一些服务层类和一个与外部系统联系的后端类。我使用 spring 来初始化后端类实例并将其注入服务类 bean,然后将服务类 bean 注入前端类 bean(视情况而定)。

前端类(逻辑上)分为模块。服务层和后端是通用的。

现在,我的要求是后端类方法需要根据进行调用的前端类的模块向外部系统发送不同的字段值。

为了使它更简单,考虑一个(有些粗略的)用例,其中后端类为每个方法调用连接到数据库。由模块 A 的前端类发起的 DB 调用必须始终使用用户名“moduleA”连接。同样,来自模块 B 的所有调用都必须导致使用用户名“moduleB”的连接。请注意,无论调用者如何,行为本身都是常见的——只是用户名必须不同。

最简单的方法是让每个前端类 bean 拥有自己的服务层类 bean 副本,而服务层类 bean 又拥有自己的后端类 bean 副本。例如,模块 A 的前端 bean 将引用模块 A 服务 bean,后者将引用模块 A 后端 bean。在这种情况下,我可以将模块 A 的用户名注入模块 A 的后端 bean。同样,moduleB 也会有一组 bean 定义(前端 + 服务 + 后端)。

但我不想创建这么多 bean 定义。另一种简单的方法是在所有方法中将值从前端一直传递到后端。但这是一个广泛的变化。有没有更简单的使用 Spring 的方法?

4

1 回答 1

0

You should try passing the values using thread local (if your modules are running inside the same JVM) Be careful to clean the thread in a servlet filter via a finally method.

于 2013-06-14T14:49:39.977 回答