Java 使用模拟连接的设计

Java 使用模拟连接的设计,java,mocking,Java,Mocking,我有一个简单的应用程序,它有一个带有后端连接的UI,我从中获取数据。现在,在开发过程中,我不想连接到后端,因为它会减慢我的速度。因此,我有一些本地存储的数据,我“模拟”连接以返回本地存储的数据,而不是进行服务器调用 现在,这不是为了编写测试用例(因此,我不知道是否会出现模拟框架),而是为了能够在开发过程中在本地和远程连接之间切换 我想有很多方法可以做到这一点: 从服务器获取连接 工厂(或通过依赖项注入) 以及设置一个返回 本地连接 维持 属性文件,我在其中设置 “local=true”或类似内

我有一个简单的应用程序,它有一个带有后端连接的UI,我从中获取数据。现在,在开发过程中,我不想连接到后端,因为它会减慢我的速度。因此,我有一些本地存储的数据,我“模拟”连接以返回本地存储的数据,而不是进行服务器调用

现在,这不是为了编写测试用例(因此,我不知道是否会出现模拟框架),而是为了能够在开发过程中在本地和远程连接之间切换

我想有很多方法可以做到这一点:

  • 从服务器获取连接 工厂(或通过依赖项注入) 以及设置一个返回 本地连接
  • 维持 属性文件,我在其中设置 “local=true”或类似内容 返回本地连接

还有其他方法可以实现这一点吗?

问题有两个方面:

  • 应用程序从哪里获得连接?工厂?聪明的注释管理DI
  • 连接源如何确定使用哪一个、模拟还是可能使用几种不同的live变体(Prod、ST、Dev等)
  • 对于前者,其他地方有很多关于DI技术的讨论。我倾向于那些也能很容易地实现单元测试的方法——我发现DI在这方面很有用


    至于可能使用的任何属性/配置,这取决于您拥有的环境类型。您不会说您的应用程序是独立的Java应用程序还是在JEE环境中运行的应用程序。如果是后者,那么使用JNDI资源可能会很有用。

    当我偶尔需要使用本地数据库而不是网络上的生产数据库时,我会编辑我的

    
    /etc/主机


    因此,生产数据库的名称将重新归属于我自己的本地主机。又快又脏。

    不要把事情复杂化。显然需要返回不同的实现——所以使用工厂。然后,工厂需要知道要创建哪个实现。您可以使用属性,甚至可以使用静态布尔变量。

    您查看过依赖项注入框架吗

    我已经习惯于处理这个确切的问题。

    请参阅以获取想法