0

我想考虑我的 web 应用程序(部署/开发)的配置类型,以在我的 web 应用程序中的许多模块的功能在实时和测试行为之间切换。

例如,有一些模块提供支付服务,我需要在 live 和 sandbox 之间切换 API 配置。我想根据 webapplications 配置类型来决定。例如提供如下方法:

public boolean isRuntimeConfigurationTypeDeployment() {
        return getConfigurationType().equals(RuntimeConfigurationType.DEPLOYMENT);
    }

在我的应用程序类中,我可以通过任何检票口页面调用它。但是,与其将切换行为的责任留给检票口组件本身,不如集中管理这些决策。由于需要在许多不同的地方做出决定,我想知道设计这种架构的最佳实践是什么。

另一个实际示例:在管理前端中手动将订单提交到履行中心的按钮

public void onClick(AjaxRequestTarget target) {
                if(getShopAdminApplication().isRuntimeConfigurationTypeDeployment())
                    Export.fullfillment().send();
                else {
                    ExportMock.fullfillment().send();
                }
            }
4

2 回答 2

1

我会使用提供运行时模式的单一服务(dev、prod、uat 等)。以及根据模式执行不同类型 ioc 的另一个服务(弹簧配置)。我会避免按组件检查模式。ioc 应该在启动时完成,然后所有组件都应该完全相同,无论它是 prod 还是 test。只是尝试替换一些组件的实现进行测试。

于 2012-06-05T14:54:11.560 回答
1

如果主要是切换服务,您可以使用 Google Guice(或其他一些依赖注入框架)来提供这些服务,并根据 Application.init() 中的当前运行时模式设置一个中心点来加载模块。这样你的代码就不会被样板文件乱扔,你也不会忘记这个样板文件......

于 2012-06-06T08:25:59.797 回答