我有一个spring Boot 应用程序,它使用application.yml进行配置。其结构如下:
...
rmq:
host: "host"
port: 5672
...
在我的代码中,我有ApplicationConfig类,如下所示:
@AllArgsConstructor
class ApplicationConfig {
private RabbitConfig rabbitConfig;
}
@ConfigurationProperties(prefix = "rmq")
class RabbitConfig {
@NotNull
private String host;
@NotNull
private Integer port;
}
问题是rmq部分在我的应用程序中是可选的。我希望字段rabbitConfig在application.yml中不存在的情况下初始化为null。
但是如果我真的在配置文件中删除rmq部分,我会得到一个错误(rmq.host不存在)。在这种情况下,有可能强制springboot使用null初始化rabbitConfig吗?
1条答案
按热度按时间nuypyhwy1#
在这种情况下,您可以使用
@ConditionalOnProperty
。在您的情况下,您应该将其定义为:然后,仅当设置了
rmq.host
时,它才会加载Bean,否则,它将被设置为null
。还有一种选择,您总是将rmq.enabled = true| false,然后是
@ConditionalOnProperty(prefix = "rmq", name = "host", havingValue = true)