如何使用Togglz Spring Autoconfiguration在app config bean创建中使用功能切换?

时间:2017-10-06 21:42:17

标签: spring togglz

使用功能切换以在应用配置中创建bean的示例:

@RefreshScope
@Configuration
@Order(1)
class AppConfig {
    @Bean
    @Autowired
    public FeatureProvider featureProvider() {
        return new EnumBasedFeatureProvider(FeatureToggle.class);
    }

    @Bean
    @Autowired
    ProjectAccess getProjectAccess(DataSource dataSource, HazelcastLocator hazelcastLocator) {
        if(FeatureToggle.MY_TOGGLE_NAME.isActive()) {
            return new MyTestClass();
        }
        else {
            return new YourTestClass();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你不应该这样做。 ; - )

此代码的问题在于您基本上在启动时读取切换一次,然后无法再更改它。那不是通常使用Togglz的方式。

相反,您应该设计您的应用程序,以便可以在运行时切换开关。 Togglz提供了专为此案例设计的FeatureProxyFactoryBean

您也可以通过为两个实现创建一个公共接口来手动创建,然后创建一个实现,它基本上检查每个方法调用的切换,然后委托给正确的实例。