java – 未加载Spring引导@ConfigurationProperties
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 未加载Spring引导@ConfigurationProperties,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2848字,纯文字阅读大概需要5分钟。
内容图文
![java – 未加载Spring引导@ConfigurationProperties](/upload/InfoBanner/zyjiaocheng/824/9dddfed3f1a7433e839723819cd751c5.jpg)
正如标题所说,我正在尝试使用Typesafe Configuration Properties来加载DataSourceConfig对象列表.我有用于制定者/吸气者的lombok
主要的应用程序类注释
@Slf4j
@SpringBootApplication
@EnableConfigurationProperties
public class Application {
配置pojo
@Data
public class DataSourceConfig {
private String key;
private String dbname;
private String dbpath;
}
yml文件
tenantdb:
dataSourceConfig:
-
key: default
dbpath: file:eventstore/jdbc/database
dbname: defaultdb
-
key: other
dbpath: file:eventstore/jdbc/other
dbname: dslfjsdf
最后,Spring Configuration类带有@ConfigurationProperties注释.
@Configuration
@Profile("hsqldb")
@ImportResource(value = { "persistence-config.xml" })
@Slf4j
@ConfigurationProperties(prefix="tenantdb", locations={"datasources.yml"})
public class HsqlConfiguration {
private List<DataSourceConfig> dataSourceConfig = new ArrayList<>();
@Bean
public List<DataSourceConfig> getDataSourceConfig() {
return dataSourceConfig;
}
通过上面的配置,我得到:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hsqlConfiguration': Could not bind properties to [unknown] (target=tenantdb, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is java.lang.NullPointerException
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:303)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:250)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initia
我尝试了各种组合.如果我将注释更改为@ConfigurationProperties(prefix =“tenantdb.dataSourceConfig”),我不会得到错误但List< DataSourceConfig>是空的.
救命!!
解决方法:
您应该将配置属性用作仅具有getter和setter的简单POJO,并且具有单独的HsqlConfiguration,其中已注入此属性.
像这样的东西:
@Component
@ConfigurationProperties(prefix="tenantdb", locations={"datasources.yml"})
public class TenantDbProperties {
//DataSourceConfig is POJO with key, dbpath and dbname
private List<DataSourceConfig> dataSourceConfigs;
public List<DataSourceConfig> getDataSourceConfigs(){
return dataSourceConfigs;
}
public void setDataSourceConfigs(List<DataSourceConfig> dataSourceConfigs){
this.dataSourceConfigs = dataSourceConfigs;
}
}
在单独的类中,这些属性注入:
@Configuration
@Profile("hsqldb")
@ImportResource(value = { "persistence-config.xml" })
@Slf4j
public class HsqlConfiguration {
@Autowired
private TenantDbProperties tenantDbProperties;
//code goes here where you can use tenantDbProperties.getDataSourceConfigs()
}
内容总结
以上是互联网集市为您收集整理的java – 未加载Spring引导@ConfigurationProperties全部内容,希望文章能够帮你解决java – 未加载Spring引导@ConfigurationProperties所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。