无法在 Cloud Foundry 中使用 Spring Cloud Connector 设置 connectionProperties

Cannot set connectionProperties with Spring Cloud Connectors in Cloud Foundry

我正在 Cloud Foundry 上的 Spring Boot / Spring Cloud Connectors 项目 运行 中使用 Tomcat JDBC 连接池和MariaDB JDBC 驱动程序如下:

@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);
    }
}

出于某种原因,只有引用池大小和 maxWait 而不是 connectionProperties 的属性被 DataSource bean 获取 - 请参阅日志输出:

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

有什么提示吗?

注意:尝试通过 Spring 的 ConnectionConfig class 设置 connectionProperties 也没有用。

尝试以下操作:

替换

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

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

或者,您也可以直接在application.properties

中指定以下属性

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

尝试使用 DataSourceConfig 的形式,它采用单独的 PoolConfigConnectionConfig bean,如下所示:

@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);
}