@ConditionalOnExpression启用/禁用@RestController

时间:2016-03-25 12:30:46

标签: java spring spring-boot

我正在尝试根据属性文件中的值启用/禁用控制器。 我的控制器看起来像这样:

@RestController
@ConditionalOnExpression("${properties.enabled}")
public class Controller{
  public String getSomething() {
    return "Something";
  }
}

我的属性文件如下所示:

properties.enabled= false

并且控制器始终处于启用状态(我可以访问方法getSomething)。我也试过这样的组合:

@ConditionalOnExpression("${properties.enabled:true}")
@ConditionalOnExpression("${properties.enabled}==true")
@ConditionalOnExpression("${properties.enabled}=='true'")
@ConditionalOnExpression("'${properties.enabled}'=='true'")

编辑: 还尝试了不同的注释:

@ConditionalOnProperty(prefix = "properties", name="enabled")

1 个答案:

答案 0 :(得分:0)

我终于找到了问题。这个Bean不是由Spring创建的,而是在WebConfiguration类中创建的,所以我不得不在那里添加注释

angular.module('ngApp').controller

我的控制器现在看起来像这样:

public class CommonWebConfiguration extends WebMvcConfigurationSupport {
 @Bean
 @ConditionalOnProperty(prefix="properties",name = "enabled")
 public Controller controller() {
    return new Controller ();
 }
}