Micronaut 目前仅支持开箱即用的 Tomcat JDBC、Apache DBCP2 和 Hikari 数据源提供程序(请参阅https://micronaut-projects.github.io/micronaut-sql/latest/guide/#jdbc https://micronaut-projects.github.io/micronaut-sql/latest/guide/#jdbc).
您可以将此行添加到您的构建.gradle它将 Tomcat JDBC 数据源提供程序实现添加到您的项目中:
runtime "io.micronaut.configuration:micronaut-jdbc-tomcat"
或者您可以选择其他实现,例如 Apache DBCP2:
runtime "io.micronaut.configuration:micronaut-jdbc-dbcp"
或者光:
runtime "io.micronaut.configuration:micronaut-jdbc-hikari"
For nl.topicus:spanner-jdbc
您必须实现自己的数据源提供者DatasourceFactory
and DatasourceConfiguration
对于 Micronaut,因为还没有人。
你可以激励自己io.micronaut.configuration:micronaut-jdbc-tomcat
。来源在这里:https://github.com/micronaut-projects/micronaut-sql/tree/master/jdbc-tomcat/src/main/java/io/micronaut/configuration/jdbc/tomcat https://github.com/micronaut-projects/micronaut-sql/tree/master/jdbc-tomcat/src/main/java/io/micronaut/configuration/jdbc/tomcat
例如DatasourceFactory
然后可以看起来像这样:
@Factory
public class DatasourceFactory implements AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(DatasourceFactory.class);
private List<nl.topicus.jdbc.CloudSpannerDataSource> dataSources = new ArrayList<>(2);
private final DataSourceResolver dataSourceResolver;
/**
* Default constructor.
* @param dataSourceResolver The data source resolver
*/
public DatasourceFactory(@Nullable DataSourceResolver dataSourceResolver) {
this.dataSourceResolver = dataSourceResolver == null ? DataSourceResolver.DEFAULT : dataSourceResolver;
}
/**
* @param datasourceConfiguration A {@link DatasourceConfiguration}
* @return An Apache Tomcat {@link DataSource}
*/
@Context
@EachBean(DatasourceConfiguration.class)
public DataSource dataSource(DatasourceConfiguration datasourceConfiguration) {
nl.topicus.jdbc.CloudSpannerDataSource ds = new nl.topicus.jdbc.CloudSpannerDataSource();
ds.setJdbcUrl(datasourceConfiguration.getJdbcUrl());
...
dataSources.add(ds);
return ds;
}
@Override
@PreDestroy
public void close() {
for (nl.topicus.jdbc.CloudSpannerDataSource dataSource : dataSources) {
try {
dataSource.close();
} catch (Exception e) {
if (LOG.isWarnEnabled()) {
LOG.warn("Error closing data source [" + dataSource + "]: " + e.getMessage(), e);
}
}
}
}
}
无论如何,您仍然可以将 Google Cloud Spanner DB 与 Hikari 和 Apache DBCP2 等数据源提供商一起使用。例如:
runtime 'nl.topicus:spanner-jdbc:1.1.5'
runtime "io.micronaut.configuration:micronaut-jdbc-hikari"
第一行添加 JDBC 驱动程序,第二行添加数据源提供程序,该提供程序将使用spanner-jdbc
JDBC 驱动程序。