如何解决为什么r2dbc-spi的connectTimeout属性的类型为java.time.Duration,以及如何在URL连接中使用它?
我正在将URL连接与application.yml文件一起用于r2dbc连接。
我尝试设置connectTimeout
属性,但出现此错误:
Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.time.Duration (java.lang.String and java.time.Duration are in module java.base of loader 'bootstrap')
,然后检查r2dbc-spi是否将connectTimeout
的类型配置为java.time.Duration
。而我正在使用的r2dbc-mysql
紧随其后。
我可以通过URL方式使用connectTimeout属性吗?我不知道如何自动将其从字符串传输到java.time.Duration
。
到目前为止,我看到大多数类型的连接属性值是字符串,整数,布尔值。据我所知,JDBC将connectTimeout
的单位配置为ms
,因此我可以轻松地将connectTimeout
设置为URL。 r2dbc-spi是否为此选择了Duration
类型?
解决方法
我发现,它从0.8.2.RELEASE
解析了DurationStr,因此使用PnDTnHnMn.nS
格式设置connectTimeout是可行的。
在MySqlConnectionFactoryProvider.java中:
mapper.from(CONNECT_TIMEOUT).asInstance(Duration.class,Duration::parse)
.into(builder::connectTimeout);
有一件事是,在0.8.2
下,它没有实现,但是我的pom.xml导入了0.8.1.RELEASE和0.8.2.RELEASE,尽管我没有定义任何0.8.1东西。所以spring用0.8.1
r2dbc:pool:mysql://host:port/db?connectTimeout=PT3S // 3 seconds
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。