I would like to connect my application with 2 different databases. This is what I have tried:
JavaScript
x
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:
JavaScript
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:
JavaScript
@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.