【发布时间】:2016-12-31 17:14:18
【问题描述】:
我有一个带有很多 @Component、@Controller、@RestController 注释组件的 Spring Boot 应用程序。我想分别切换大约 20 种不同的功能。重要的是可以在不重建项目的情况下切换功能(重新启动就可以了)。我认为 Spring 配置会是一个不错的方式。
我可以像这样对配置(yml)进行映像:
myApplication:
features:
feature1: true
feature2: false
featureX: ...
主要问题是我不想在所有地方都使用 if 块。我宁愿完全禁用这些组件。例如,一个 @RestController 甚至应该被加载并且它不应该注册它的路径。我目前正在寻找这样的东西:
@Component
@EnabledIf("myApplication.features.feature1") // <- something like this
public class Feature1{
// ...
}
有这样的功能吗?有没有一种简单的方法可以自己实现?或者还有其他功能切换的最佳做法?
顺便说一句:Spring Boot 版本:1.3.4
【问题讨论】:
-
这是一个很大的痛苦。在我的公司,只要我们能保证它不会被调用,我们就可以将半生不熟的代码发布到生产环境中。因此,即使 Spring 将所有内容连接在一起,这真的很重要吗?唯一的其他选项是 if/else,它甚至在使用之前就产生了技术债务。
-
弹簧型材? docs.spring.io/spring-boot/docs/current/reference/html/… 您可以将类注释为仅适用于某些配置文件。可以在服务器启动时设置活动配置文件。
-
非弹簧 ff4j.org 库。
标签: java spring spring-boot featuretoggle