/ / Não é possível definir o connectionProperties com o Spring Cloud Connectors no Cloud Foundry - java, tomcat, jdbc, cloudfoundry, spring-cloud

Não é possível definir connectionProperties com Spring Cloud Connectors no Cloud Foundry - java, tomcat, jdbc, cloudfoundry, spring-cloud

Estou configurando meu DataSource em um projeto Spring Boot / Spring Cloud Connectors em execução no Cloud Foundry usando o Tomcat JDBC Connection Pool e o driver MariaDB JDBC da seguinte maneira:

@Configuration
@Profile("cloud")
public class MyDataSourceConfiguration extends AbstractCloudConfig {
@Bean
public DataSource dataSource() {
Map<String, Object> dataSourceProperties = new HashMap<>();
dataSourceProperties.put("initialSize", "4"); // OK
dataSourceProperties.put("maxActive", "4");   // OK
dataSourceProperties.put("maxWait", "2000");  // OK
dataSourceProperties.put("connectionProperties",
"useUnicode=yes;characterEncoding=utf8;"); // ignored
DataSourceConfig conf = new DataSourceConfig(dataSourceProperties);
return connectionFactory().dataSource(conf);
}
}

Por algum motivo, apenas as propriedades referentes ao tamanho do pool e maxWait, mas não as connectionProperties, são captadas pelo bean DataSource - consulte a saída do log:

maxActive = 4; initialSize = 4; maxWait = 2000; connectionProperties = null

Alguma dica?

Nota: Tentar definir o connectionProperties através da classe ConnectionConfig do Spring também não funcionou.

Respostas:

2 para resposta № 1

Tente usar o formulário de DataSourceConfig que leva separado PoolConfig e ConnectionConfig feijão, assim:

@Bean
public DataSource dataSource() {
PoolConfig poolConfig = new PoolConfig(4, 4, 2000);
ConnectionConfig connectionConfig = new ConnectionConfig("useUnicode=yes;characterEncoding=utf8;");
DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, connectionConfig);
return connectionFactory().dataSource(dbConfig);
}

0 para resposta № 2

Tente o seguinte:

Substituir

connProperties.put("connectionProperties", "useUnicode=yes;characterEncoding=utf8;");

com

connProperties.put("connectionProperties", "useUnicode=yes;characterEncoding=utf-8;");

Como alternativa, você também pode especificar a seguinte propriedade diretamente em application.properties

spring.datasource.connectionProperties=useUnicode=true;characterEncoding=utf-8;