无法在 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
的形式,它采用单独的 PoolConfig
和 ConnectionConfig
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);
}
我正在 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
的形式,它采用单独的 PoolConfig
和 ConnectionConfig
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);
}