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