假设,我们在机器上调试程序时无法访问某些所需的服务器。所以我们需要一个 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/