我需要一些有关 Spring 的帮助(SpringBoot 1.3.2.RELEASE、Spring 4.3.11.RELEASE)。用例很特殊,需要解释。
我有一个 Spring 应用程序管理客户发送的请求。为了处理这些请求,我们需要使用@Autowired 注解声明的服务。非常经典。
最近,我们决定处理来自其他国家/地区的新型请求。关键是为了面对不同的情况和类型的请求,我们决定实现一个策略模式。-> 根据请求的类型,我们执行在运行时选择的策略。每个策略都包含在一个具体的类中,并且所有策略共享相同的接口。
所以,我有:
一个主类,其中请求处理完成。为了完成它的工作,这个类曾经调用一些用@Autowired 注释声明的服务。
我现在有 :
一个只初始化请求处理的主类。为了完成它的工作,这个类将在运行时根据一些标准实例化一个单一的策略。
带有 2 个方法的 IStrategy(接口)将由我的 2 个具体类实现
2 个具体的类(以及更多的类)可以完成这项工作。非常重要的一点是,这些具体的类将在运行时实例化,在 Spring 上下文加载之后。
问题是在加载 Spring 上下文之后,就不能再使用 @Autowired 注释了。 我想在具体策略类中使用的所有服务都不能再被 @Autowired 调用并保持为 NULL。
我通过将我需要的服务作为参数传递给我的具体策略类找到了一种解决方法,但是我必须作为参数传递的服务数量因一种策略而异。
我认为我应该传递整个 Spring 上下文,但我不知道该怎么做。而且我也不知道如何从上下文访问所有带注释的服务。
PS:我不显示代码行,因为我认为实际上没有必要。如果您认为代码会更明确,我会发送一些。
提前感谢。
不负相思意
慕姐4208626
紫衣仙女
相关分类