Sping Boot 提供了一种优雅的方法,可以使用@ConfigurationProperties(prefix = "foo")
将带有特定键前缀的属性注入Configuration类。这里显示了这一点和here。问题是,如何将带有前缀的属性注入java.util.Properties
示例,如下所示?
@Configuration
@EnableConfigurationProperties
public class FactoryBeanAppConfig {
@Bean
@ConfigurationProperties(prefix = "kafka")
public Producer<String, String> producer(Properties properties) throws Exception {
Producer<String, String> producer = new KafkaProducer<String, String>(properties);
return producer;
}
}
3条答案
按热度按时间qgzx9mmu1#
这是行不通的,因为这个属性注入是基于应该保存
@ConfigurationProperties
的对象上的getter和setter的。定义一个保存所需属性的类,如下所示:然后在您的配置中使用它,如下所示
更新
既然您已经说过不希望将每个属性都表示为java代码,那么您可以使用
HashMap
作为@ConfigurationProperties
中唯一的属性在您的
application.properties
中,您可以如下指定属性:在您的配置中,您可以这样使用它:
hgb9j2n62#
您可以定义使用
@ConfigurationProperties
注解的新Bean,如下所示:(取自https://stackoverflow.com/a/50810923/500478)
l3zydbqr3#
@自动布线环境;{返回新属性(){ @覆盖公共字符串getProperty(字符串名称){返回环境.getProperty(名称);} }; }