@ -38,7 +38,6 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import ;
import org.springframework.context.annotation.Import ;
import org.springframework.core.type.AnnotatedTypeMetadata ;
import org.springframework.core.type.AnnotatedTypeMetadata ;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType ;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType ;
import org.springframework.util.StringUtils ;
/ * *
/ * *
* { @link EnableAutoConfiguration Auto - configuration } for { @link DataSource } .
* { @link EnableAutoConfiguration Auto - configuration } for { @link DataSource } .
@ -129,14 +128,16 @@ public class DataSourceAutoConfiguration {
* /
* /
static class EmbeddedDatabaseCondition extends SpringBootCondition {
static class EmbeddedDatabaseCondition extends SpringBootCondition {
private static final String DATASOURCE_URL_PROPERTY = "spring.datasource.url" ;
private final SpringBootCondition pooledCondition = new PooledDataSourceCondition ( ) ;
private final SpringBootCondition pooledCondition = new PooledDataSourceCondition ( ) ;
@Override
@Override
public ConditionOutcome getMatchOutcome ( ConditionContext context , AnnotatedTypeMetadata metadata ) {
public ConditionOutcome getMatchOutcome ( ConditionContext context , AnnotatedTypeMetadata metadata ) {
ConditionMessage . Builder message = ConditionMessage . forCondition ( "EmbeddedDataSource" ) ;
ConditionMessage . Builder message = ConditionMessage . forCondition ( "EmbeddedDataSource" ) ;
String url = context . getEnvironment ( ) . getProperty ( "spring.datasource.url" ) ;
boolean hasDatasourceUrl = context . getEnvironment ( ) . containsProperty ( DATASOURCE_URL_PROPERTY ) ;
if ( StringUtils. hasText ( url ) ) {
if ( hasDatasourceUrl ) {
return ConditionOutcome . noMatch ( message . found( "explicit url" ) . items ( url ) ) ;
return ConditionOutcome . noMatch ( message . because( DATASOURCE_URL_PROPERTY + " is set" ) ) ;
}
}
if ( anyMatches ( context , metadata , this . pooledCondition ) ) {
if ( anyMatches ( context , metadata , this . pooledCondition ) ) {
return ConditionOutcome . noMatch ( message . foundExactly ( "supported pooled data source" ) ) ;
return ConditionOutcome . noMatch ( message . foundExactly ( "supported pooled data source" ) ) ;