【发布时间】:2018-06-04 06:57:51
【问题描述】:
我们希望通过在登录请求中发送他/她希望拥有的角色来实现使用户能够在系统中选择角色的功能。
此功能用于测试(在客户系统中创建测试用户或将角色分配给现有用户是“不可能的”),当然,永远不应该部署到生产环境中。
如果属性feature.choose-role 设置为true 并且spring active profile 设置为production,我希望我的应用程序部署失败。
由于我们正在使用 springs config-server 功能,如果在运行时将属性设置为 true,我还希望应用程序完全停止工作。
我的第一次尝试是简单地创建这个配置:
@Configuration
public class FeatureToggleGuardConfig {
@Bean
@RefreshScope
@ConditionalOnProperty(value = "feature.choose-roles", havingValue = "true")
@Profile("production")
public Object preventDeploymentOfRoleChoosingFeatureOnProduction() {
throw new RuntimeException("feature.choose-roles must not be true in production profile!");
}
}
如果该属性在部署时设置为 true,则此方法有效,但据我所知,只有在有人真正尝试使用它时才会尝试刷新 bean - 这永远不会发生。
另外 - 我不认为它会停止整个应用程序,如果它只是在使用时抛出运行时异常。
简而言之:
如果属性feature.choose-roles 为真且活动配置文件为“生产”,我想阻止我的应用程序运行(或继续运行)。
我不想更改生产代码来执行此操作(if(feature is enables && profile is production) 等)
【问题讨论】:
标签: spring spring-boot