[英]Configuring data source URL in Spring without XML
我有一個使用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行樣板
Spring Boot會自動為您配置一個DataSource
。 要影響如何設置以及設置幾個屬性,可以設置幾個屬性。 這些前綴以spring.datasource
為前綴,有關完整列表,請參閱《 Spring Boot參考指南》 。
就您而言,只需將以下內容添加到application.properties
文件
spring.datasource.url=jdbc:h2:file:...
這將告訴Spring Boot使用該URL而不是默認URL。
由於H2被認為是內存數據庫而不是常規數據庫,因此在使用JPA時,這將導致您的數據庫在應用程序停止時被刪除。 要解決此問題,只需添加以下內容
spring.jpa.hibernate.ddl-auto=update
要指定一種方言,只需添加以下內容
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
甚至更簡單
spring.jpa.database=H2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.