लोड नहीं होने के कारण, मैं ऑब्जेक्ट्स की सूची लोड करने के लिए Typesafe Configuration Properties का उपयोग करने का प्रयास कर रहा हूं। मैंस्प्रिंग बूट @ कॉन्फ़िगरेशनप्रॉपर्टीज
मुख्य आवेदन वर्ग एनोटेशन
@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
अंत में, के साथ वसंत विन्यास वर्ग सेटर/टिककर खेल के लिए lombok है @ कॉन्फ़िगरेशनप्रॉपर्टीज एनोटेशन।
@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;
}
config के साथ
ऊपर, मैं मिलता है:
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>
खाली है।
सहायता !!
मेरे विन्यास गुण @ Component' से एनोटेट 'और यह जबकि घटक स्कैनिंग भर जाता है, है तुमने कोशिश की? इसके अलावा दो और चीजें, 'datasources.yml' कहां स्थित है और बीन के रूप में एनोटेटेड' GetDataSourceConfig 'क्यों है? –
'datasources.yml' क्लासपाथ रूट पर है। 'GetDataSourceConfig' को एक बीन के रूप में एनोटेट किया गया है ताकि मैं इसे कहीं और इंजेक्ट कर सकूं। – Raghu
मैंने आपके कोड के साथ खेलने की कोशिश की, परीक्षण बनाया और मुझे उम्मीद के अनुसार 2 'डेटासोर्स कॉन्फिग' की सूची मिल गई। केवल एक चीज यह है कि वे खाली हैं ('कुंजी', 'dbname' और' dbpath' के लिए 'शून्य' है। मैंने उस वर्ग पर सेटर्स प्रदान किए हैं और यह ठीक से बाध्य है, हो सकता है कि यह हो? –