我想根据配置启用/禁用 @RestController
,为了实现它,我正在尝试使用 @ConditionalOnExpression
注释。
使用静态硬编码值工作得很好:
@RestController
@ConditionalOnExpression("true")
public class MyRestController {
@RequestMapping("/hi")
public String hi() {
return "hi";
}
}
然而,在 SpEL 表达式中使用动态属性值总是导致 而不是 加载
@RestController
:@RestController
@ConditionalOnExpression("${my.rest.controller.enabled:false}")
public class MyRestController { ... }
非常感谢任何解决此问题的想法/最佳实践。
最佳答案
为了验证未提供 Spring Cloud Config 中的属性,我使用了以下表达式:
/**
* @return The Jms Template for sending the messages to the queue.
*/
@Bean(name = "jmsTemplate")
@ConditionalOnExpression("!'${jsk.messaging.jms.queue}'.isEmpty()")
public JmsTemplate jmsTemplateForQueues() {
JmsTemplate jmsTemplate = new JmsTemplate();
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(activeMQConnectionFactory());
jmsTemplate.setConnectionFactory(cachingConnectionFactory);
return jmsTemplate;
}