Fix datasource prefix in multiple-datasource configuration doc
Closes gh-13195
This commit is contained in:
parent
0fedf8d2af
commit
99a45bdef8
|
|
@ -1688,19 +1688,6 @@ username, and the pool size, these settings are bound automatically before the
|
|||
(so the relevant sub-set of `spring.datasource.*` can still be used with your custom
|
||||
configuration).
|
||||
|
||||
You can apply the same principle if you configure a custom JNDI `DataSource`, as shown in
|
||||
the following example:
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
@Bean(destroyMethod="")
|
||||
@ConfigurationProperties(prefix="app.datasource")
|
||||
public DataSource dataSource() throws Exception {
|
||||
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
|
||||
return dataSourceLookup.getDataSource("java:comp/env/jdbc/YourDS");
|
||||
}
|
||||
----
|
||||
|
||||
Spring Boot also provides a utility builder class, called `DataSourceBuilder`, that can
|
||||
be used to create one of the standard data sources (if it is on the classpath). The
|
||||
builder can detect the one to use based on what's available on the classpath. It also
|
||||
|
|
@ -1768,18 +1755,22 @@ include::{code-examples}/jdbc/ConfigurableDataSourceExample.java[tag=configurati
|
|||
----
|
||||
|
||||
This setup puts you _in sync_ with what Spring Boot does for you by default, except that
|
||||
a dedicated connection pool is chosen (in code) and its settings are exposed in the same
|
||||
namespace. Because `DataSourceProperties` is taking care of the `url`/`jdbcUrl`
|
||||
translation for you, you can configure it as follows:
|
||||
a dedicated connection pool is chosen (in code) and its settings are exposed in the
|
||||
`app.datasource.configuration` sub namespace. Because `DataSourceProperties` is taking
|
||||
care of the `url`/`jdbcUrl` translation for you, you can configure it as follows:
|
||||
|
||||
[source,properties,indent=0]
|
||||
----
|
||||
app.datasource.url=jdbc:mysql://localhost/test
|
||||
app.datasource.username=dbuser
|
||||
app.datasource.password=dbpass
|
||||
app.datasource.maximum-pool-size=30
|
||||
app.datasource.configuration.maximum-pool-size=30
|
||||
----
|
||||
|
||||
TIP: Spring Boot will expose Hikari-specific settings to `spring.datasource.hikari`. This
|
||||
example uses a more generic `configuration` sub namespace as the example does not support
|
||||
multiple datasource implementations.
|
||||
|
||||
NOTE: Because your custom configuration chooses to go with Hikari, `app.datasource.type`
|
||||
has no effect. In practice, the builder is initialized with whatever value you
|
||||
might set there and then overridden by the call to `.type()`.
|
||||
|
|
@ -1815,10 +1806,12 @@ configure them as follows:
|
|||
|
||||
[source,properties,indent=0]
|
||||
----
|
||||
app.datasource.first.type=com.zaxxer.hikari.HikariDataSource
|
||||
app.datasource.first.maximum-pool-size=30
|
||||
app.datasource.first.url=jdbc:mysql://localhost/first
|
||||
app.datasource.first.username=dbuser
|
||||
app.datasource.first.password=dbpass
|
||||
app.datasource.first.configuration.maximum-pool-size=30
|
||||
|
||||
app.datasource.second.url=jdbc:mysql://localhost/test
|
||||
app.datasource.second.url=jdbc:mysql://localhost/second
|
||||
app.datasource.second.username=dbuser
|
||||
app.datasource.second.password=dbpass
|
||||
app.datasource.second.max-total=30
|
||||
|
|
@ -1833,7 +1826,8 @@ include::{code-examples}/jdbc/CompleteTwoDataSourcesExample.java[tag=configurati
|
|||
----
|
||||
|
||||
The preceding example configures two data sources on custom namespaces with the same
|
||||
logic as Spring Boot would use in auto-configuration.
|
||||
logic as Spring Boot would use in auto-configuration. Note that each `configuration` sub
|
||||
namespace provides advanced settings based on the chosen implementation.
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
package org.springframework.boot.docs.jdbc;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
|
@ -48,9 +49,10 @@ public class CompleteTwoDataSourcesExample {
|
|||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first")
|
||||
public DataSource firstDataSource() {
|
||||
return firstDataSourceProperties().initializeDataSourceBuilder().build();
|
||||
@ConfigurationProperties("app.datasource.first.configuration")
|
||||
public HikariDataSource firstDataSource() {
|
||||
return firstDataSourceProperties().initializeDataSourceBuilder()
|
||||
.type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
|
@ -60,9 +62,10 @@ public class CompleteTwoDataSourcesExample {
|
|||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second")
|
||||
public DataSource secondDataSource() {
|
||||
return secondDataSourceProperties().initializeDataSourceBuilder().build();
|
||||
@ConfigurationProperties("app.datasource.second.configuration")
|
||||
public BasicDataSource secondDataSource() {
|
||||
return secondDataSourceProperties().initializeDataSourceBuilder()
|
||||
.type(BasicDataSource.class).build();
|
||||
}
|
||||
// end::configuration[]
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class ConfigurableDataSourceExample {
|
|||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource")
|
||||
@ConfigurationProperties("app.datasource.configuration")
|
||||
public HikariDataSource dataSource(DataSourceProperties properties) {
|
||||
return properties.initializeDataSourceBuilder().type(HikariDataSource.class)
|
||||
.build();
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package org.springframework.boot.docs.jdbc;
|
|||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
|
|
@ -51,9 +52,10 @@ public class SimpleTwoDataSourcesExample {
|
|||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first")
|
||||
public DataSource firstDataSource() {
|
||||
return firstDataSourceProperties().initializeDataSourceBuilder().build();
|
||||
@ConfigurationProperties("app.datasource.first.configuration")
|
||||
public HikariDataSource firstDataSource() {
|
||||
return firstDataSourceProperties().initializeDataSourceBuilder()
|
||||
.type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(properties = {
|
||||
"app.datasource.url=jdbc:h2:mem:configurable;DB_CLOSE_DELAY=-1",
|
||||
"app.datasource.maximum-pool-size=42" })
|
||||
"app.datasource.configuration.maximum-pool-size=42" })
|
||||
@Import(ConfigurableDataSourceExample.ConfigurableDataSourceConfiguration.class)
|
||||
public class ConfigurableDataSourceExampleTests {
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue