考虑运行时配置类型应用程序的最佳实践/最佳设计选择

时间:2012-06-05 12:42:21

标签: java design-patterns wicket

我想考虑我的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();
                }
            }

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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