我想考虑我的webapplication(部署/开发)的配置类型,以在我的web应用程序中切换实时和测试行为之间的许多模块的功能。
例如,有一些模块可以提供支付服务,我需要在live和sandbox之间切换API配置。我想根据webapplications配置类型来决定。例如提供如下方法:
public boolean isRuntimeConfigurationTypeDeployment() {
return getConfigurationType().equals(RuntimeConfigurationType.DEPLOYMENT);
}
在我的Applications类中,我可以通过任何wicket页面调用它。但是,不是将责任转移到wicket组件本身,而是集中管理这些决策可能更好。由于需要在许多不同的地方做出决定,我想知道设计这种架构的最佳做法是什么。
另一个实际例子: 用于在管理前端内手动将订单提交到完成中心的按钮
public void onClick(AjaxRequestTarget target) {
if(getShopAdminApplication().isRuntimeConfigurationTypeDeployment())
Export.fullfillment().send();
else {
ExportMock.fullfillment().send();
}
}
答案 0 :(得分:1)
我会使用提供运行时模式的单一服务(dev,prod,uat等)。和另一种服务(弹簧配置)根据模式执行不同类型的ioc。我会避免按组件检查模式。 ioc应该在启动时完成,然后所有组件应该完全相同,无论是prod还是test。只是尝试替换某些组件的实现以进行测试。
答案 1 :(得分:1)
如果它主要是切换服务,您可以使用Google Guice(或其他一些依赖注入框架)来提供这些服务,并根据Application.init()中的当前运行时模式有一个加载模块的中心点。这样你的代码就不会被样板所困扰,你也不会忘记这个样板......