基于容器bean的Spring属性值更改

基于容器bean的Spring属性值更改,spring,Spring,这更像是一个设计问题。我的项目结构是这样的——我有十几个前端类、一些服务层类和一个与外部系统联系的后端类。我使用spring初始化后端类实例并将其注入服务类bean,然后将服务类bean反过来注入前端类bean(视情况而定) 前端类(逻辑上)划分为模块。服务层和后端是通用的 现在,我的要求是后端类方法需要根据进行调用的前端类的模块向外部系统发送不同的字段值 为了使它更简单,考虑一个(粗略的)用例,后端类连接到每个方法调用的DB。由模块A的前端类发起的DB调用必须始终使用用户名“moduleA”连

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

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

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

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

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


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

您应该尝试使用thread local传递值(如果您的模块在同一JVM中运行) 注意通过finally方法清理servlet过滤器中的线程