gpt4 book ai didi

java - 在没有 XML 的 Spring 中配置数据源 URL

转载 作者:行者123 更新时间:2023-12-01 11:36:26 24 4
gpt4 key购买 nike

我有一个使用 Spring Boot 与数据库通信的简单 Web MVC 应用程序; DB 是 H2,到目前为止一直在内存中。我想改变这一点,因此使用 jdbc:h2:file:... URL。

到目前为止,我不需要添加任何 XML 来配置我的应用程序,并且如果可能的话,我希望它保持这种状态。但我不知道如何指定不同的 JDBC URL。我通过将数据源传递给 @Bean 方法来获取并检查数据源:

org.apache.tomcat.jdbc.pool.DataSource@745e6f01{ConnectionPool[
defaultAutoCommit=null;
defaultReadOnly=null;
defaultTransactionIsolation=-1;
defaultCatalog=null;
driverClassName=org.h2.Driver;
maxActive=100;
maxIdle=100;
minIdle=10;
initialSize=10;
maxWait=30000;
testOnBorrow=false;
testOnReturn=false;
timeBetweenEvictionRunsMillis=5000;
numTestsPerEvictionRun=0;
minEvictableIdleTimeMillis=60000;
testWhileIdle=false;
testOnConnect=false;
password=********;
url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;
username=sa;
validationQuery=null;
validationQueryTimeout=-1;
validatorClassName=null;
validationInterval=30000;
accessToUnderlyingConnectionAllowed=true;
removeAbandoned=false;
removeAbandonedTimeout=60;
logAbandoned=false;
connectionProperties=null;
initSQL=null;
jdbcInterceptors=null;
jmxEnabled=true;
fairQueue=true;
useEquals=true;
abandonWhenPercentageFull=0;
maxAge=0;
useLock=false;
dataSource=null;
dataSourceJNDI=null;
suspectTimeout=0;
alternateUsernameAllowed=false;
commitOnReturn=false;
rollbackOnReturn=false;
useDisposableConnectionFacade=true;
logValidationErrors=false;
propagateInterruptState=false;
ignoreExceptionOnPreLoad=false;
}

(我的换行符)

该 bean 的设置看起来相当复杂,因此我想尽可能少地干扰它 - 只需替换默认的 JDBC URL。

如何为 Spring 配置各个属性来创建数据源? 最好使用 Java,但如果有一种简洁的 XML 方式,我也很高兴。我只是想避免为相当于 url=...

的内容添加 100 行样板文件

最佳答案

DataSource 由 Spring Boot 为您自动配置。为了影响方式和内容,您可以设置多个属性。它们以 spring.datasource 为前缀,有关列表,请查看 Spring Boot Reference Guide获取完整列表。

在您的情况下,只需将以下内容添加到 application.properties 文件

spring.datasource.url=jdbc:h2:file:...

这将告诉 Spring Boot 使用此 URL 而不是默认值。

由于 H2 被视为内存数据库而不是常规数据库,因此在使用 JPA 时,这将导致您的数据库在应用程序停止时被删除。要解决此问题,只需添加以下内容

spring.jpa.hibernate.ddl-auto=update

要指定方言,只需添加以下内容

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

或者更简单

spring.jpa.database=H2

关于java - 在没有 XML 的 Spring 中配置数据源 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com