gpt4 book ai didi

java - Spring - 两个实现之间的运行时选择

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:42 25 4
gpt4 key购买 nike

假设我有一个依赖于LittleServiceHigherLevelBeanLittleService 是一个具有两个实现的接口(interface)。

没有静态或半静态的方式来判断应该使用这两个实现中的哪一个,它都是动态的(实际上是 session 范围的)。当来自该用户的请求进入时使用 LegacyLittleService,而对于来自该用户的请求使用 NewShinyLittleService

服务不会那么小。它们将有自己的需要注入(inject)的依赖项,并且它们可能来自两个不同的应用程序上下文。考虑在两种不同的模式/数据模型上使用一个应用。

我怎样才能实现这种运行时动态?理想情况下使用注释驱动的配置。我有哪些选择,它们的优缺点?

最佳答案

您可以简单地拥有一个工厂,其中注入(inject)了两种服务:

@Component
public class LittleServiceFactory {
@Autowired
private LegacyLittleService legacy;

@Autowired
private NewShinyLittleService newShiny;

@Autowired
private TheSessionScopedBean theSessionScopedBean;

public LittleService get() {
if (theSessionScopedBean.shouldUseLegacy()) {
return legacy;
}
else {
return newShiny;
}
}
}

现在将这个工厂注入(inject)到任何你想要的地方,并调用 get() 来访问适当的 LittleService 实例。

关于java - Spring - 两个实现之间的运行时选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21957844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com