I would like to connect my application with 2 different databases. This is what I have tried:
public class DataSourceWilaConfig { @Bean @Primary @ConfigurationProperties(prefix="spring.wila") public DataSource wila() { return DataSourceBuilder.create().build(); } } public class DataSourceWaldConfig { @Bean @ConfigurationProperties(prefix = "spring.wald") public DataSource wald() { return DataSourceBuilder.create().build(); } }
And so in application.properties I have added:
spring.datasource.url= spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.username= spring.datasource.password= spring.wald.datasource.url= spring.wald.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.wald.datasource.username= spring.wald.datasource.password=
But Intellij tells me: Cannot resolve configuration property ‘spring.wald.datasource.url’
What am I doing wrong?
Advertisement
Answer
Instead of returning DataSource
, you could return DataSourceProperties
, like:
@Configuration @EnableConfigurationProperties public class DataSourceWaldConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource.wald") public DataSourceProperties dataSourceProperties() { return new DataSourceProperties(); } } @Configuration @EnableConfigurationProperties public class DataSourceWilaConfig { @Bean @Primary @ConfigurationProperties(prefix="spring.datasource.wila") public DataSourceProperties wila() { return new DataSourceProperties(); } }
Also, the dependency spring-boot-configuration-processor
will be required.
Important: After that’s done, you should rebuild your project.