这更像是一个设计问题。我的项目结构是这样的 - 我有十几个前端类,一些服务层类和一个与外部系统联系的后端类。我使用spring初始化并将后端类实例注入服务类bean,然后将服务类bean注入前端类bean(视情况而定)。
前端类(逻辑上)分为模块。服务层和后端很常见。
现在,我的要求是后端类方法需要根据进行调用的前端类的模块,将字段的不同值发送到外部系统。
为了使它更简单,考虑一个(稍微粗略的)用例,其中后端类连接到每个方法调用的DB。由模块A的前端类发起的数据库调用必须始终与用户名“moduleA”连接。同样,来自模块B的所有调用必须使用用户名“moduleB”产生连接。请注意,无论调用者是什么行为本身都很常见 - 只需用户名不同。
最简单的方法是让每个前端类bean都有自己的服务层类bean副本,而后者又拥有自己的后端类bean副本。例如,模块A的前端bean将引用moduleA服务bean,它将引用moduleA后端bean。在这种情况下,我可以将模块A的用户名注入模块A的后端bean。类似地,moduleB将有一组bean定义(前端+服务+后端)。
但我不想创建这么多的bean定义。另一个简单的方法是将值从前端传递到所有方法的后端。但这是一个普遍的变化。使用Spring有更简单的方法吗?
答案 0 :(得分:0)
您应该尝试使用本地线程传递值(如果您的模块在同一个JVM中运行) 小心通过finally方法清理servlet过滤器中的线程。