我想在httpPort值不等于-1时创建Bean。我尝试下面的代码,但它抱怨表达式有问题。你能解决这个问题吗?或者如何达到我的要求。
我正在使用Java 8和Spring Boot 1.5.4
我尝试了以下选项
@ConditionalOnExpression("'${httpPort}' ne '-1'")
@ConditionalOnExpression("'${httpPort}' != '-1'")
@ConditionalOnExpression("!'${httpPort}'=='-1'")
@ConditionalOnExpression("!'${httpPort == -1}'")
@ConditionalOnExpression("!${httpPort == -1}")
大多数情况错误是EL1041E:解析有效表达式后, 表达式中还有更多数据:' lcurly({)'
@Configuration
public class TomcatConfig {
@Value("${server.http.port:-1}")
private int httpPort;
@Bean
@ConditionalOnExpression("'${httpPort}' ne '-1'")
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
TomcatEmbeddedServletContainerFactory containerFactory =
(TomcatEmbeddedServletContainerFactory) container;
Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
connector.setPort(httpPort);
containerFactory.addAdditionalTomcatConnectors(connector);
}
}
};
}
}
答案 0 :(得分:1)
通过@ConditionalOnProperty(“server.http.port”)
解决了这个问题@ConditionalOnProperty("server.http.port")
public EmbeddedServletContainerCustomizer containerCustomizer() {
}