gpt4 book ai didi

java - 在 spring : stuck finding a clean approach 中对第 3 方库使用多个实现

转载 作者:行者123 更新时间:2023-11-30 07:10:44 25 4
gpt4 key购买 nike

我正在实现一个自定义身份验证提供程序,它必须对用户进行身份验证和授权(通过一次性 token /密码)。已经有一个用于此目的的服务器,我们已经获得了一个客户端 API,可以在我们的应用程序中使用来调用这个身份验证/授权服务器。

出于商业原因,我们被允许在我们的测试环境中复制该身份验证服务器的测试设置,因此我们必须在部署到我们的环境时以某种方式模拟此客户端 API,而在我们交付给客户时使用实际的 impl。我一直在创建一种干净的方式将此客户端 API 作为 bean 注入(inject)到我的 spring 应用程序中

他们提供的客户端 API 本质上是一个带有公共(public)类(无接口(interface))和一些公共(public)静态方法的单个 JAR 包,没有可用于注入(inject)此客户端 API 或虚拟实现的接口(interface)。

这是我的计划

创建一个接口(interface)

public interface ClientAPIWrapper {

}

然后注入(inject)它的diff实现

public class DummyClientApiBean implements ClientAPIWrapper

public class ClientApiBean extends ClientAPI implements ClientAPIWrapper

但后来我意识到注入(inject)这个接口(interface)的类型将不允许访问原始客户端 API 类的方法

@Autowired
private ClientAPIWrapper clientApiBean

我想要实现的是使用原始客户端 API 类作为 bean 或虚拟 bean,使用任一实现将虚拟数据透明地返回给类。

有点像

public MyAuthenticationProvider

@Autowired
private ClientAPI clientApi

如何实现?

最佳答案

这里的问题是 API 只包含静态方法(如果我正确理解您的问题的话)。最干净的解决方案(但仍然很丑陋)是为 API 编写一个接口(interface)和一个外观类,其中包含委托(delegate)给真实 API 的非静态方法。对于模拟,创建接口(interface)的第二个实现。

关于java - 在 spring : stuck finding a clean approach 中对第 3 方库使用多个实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885247/

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