1
我只想在httpPort值不等於-1時才創建一個Bean。我嘗試了下面的代碼,但它抱怨表達式有問題。你能解決這個問題嗎?或如何達到我的要求。有條件地創建Spring bean @ConditionalOn
我使用Java 8和Spring 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);
}
}
};
}
}
這是一個很好的解決方案,它不是比較-1默認值設置,而是隻如果該參數在第一位置設置解決了這個。 – UserF40