Spring - 基于容器bean的属性值变化

时间:2013-06-14 14:36:20

标签: spring

这更像是一个设计问题。我的项目结构是这样的 - 我有十几个前端类,一些服务层类和一个与外部系统联系的后端类。我使用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有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

您应该尝试使用本地线程传递值(如果您的模块在同一个JVM中运行) 小心通过finally方法清理servlet过滤器中的线程。