java - IntelliJ想法: configure build for stub

标签 java intellij-idea builder

假设,我们在机器上调试程序时无法访问某些所需的服务器。所以我们需要一个 stub 。但是每次我想要在没有 stub 的情况下进行构建时,我都需要注释我的 stub 代码并取消注释实际代码,所以它看起来很脏。如果我可以以某种方式配置构建以避免这种注释/取消注释,那就太好了。我还没有想出什么好的决定。

例如一些代码

public class SingeFormatServiceClient {
      public static final QName SERVICE_NAME = new QName("http://creditregistry.ru/2010/webservice/SingleFormatService", "SingleFormatService");

      public SingleFormatService Connect(){
          URL wsdlURL = SingleFormatService_Service.WSDL_LOCATION;

          SingleFormatService_Service ss = new SingleFormatService_Service(wsdlURL, SERVICE_NAME);
          return ss.getSingleFormatServiceHttpPort();
      }

      public SingleFormatService Connect(){
          return new SingleFormatServiceStub();
     }
}

所以第一个函数是实际函数,第二个是 stub 函数。可能有一种方法不发表评论,但只是对构建者说,现在我想使用第一个函数进行构建,现在 - 使用第二个函数? 谢谢。

最佳答案

使用System.getProperty()实例化实现。例如:

SingleFormatService service = (SingleFormatService) Class.forName(
    System.getProperty("single_format_service_class",
    "your.comp.SingleFormatServiceStub")).getConstructor().newInstance();

您的实现必须提供无参数构造函数。在您的 jvm 参数中,指定工作类,即

-Dsingle_format_service_class=your.comp.SingleFormatServiceActual

在intellij idea中,您可以使用不同的jvm参数指定多个运行配置。

注意。 IMO 许多图书馆都使用这种方式。 Hibernate 使用 hibernate.cache.provider_class 来选择要使用的缓存提供程序实现。

关于java - IntelliJ想法: configure build for stub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24930025/

相关文章:

xml - Ruby XML::Builder 元素名称中带有连字符

java - 如何在 Java 中编写 unicode 十字符号?

java - Hadoop MapReduce 错误不同的数据类型

java - IntelliJ 远程调试器连接,但断点不起作用

intellij-idea - 我可以在 IntelliJ 中使用键盘快捷键在新的分屏选项卡中打开文件吗?

python - Python 中的 `Builder` 设计模式是否已过时?

java - 使用 A* 算法解决 8 拼图板(Board 数据类型工作正常)

java - 我不确定为什么我的类(class)没有返回正确的类型。 ArrayList<HashMap<String,String>>

maven-2 - Intellij IDEA : multiple goals, 多个项目,一键

具有继承性的 Java Builder 模式