在我的項目中,我創建了3個彈簧引導應用程序。第一個spring引導應用程序有h2嵌入式數據庫。現在我想直接從第二和第三彈簧啓動應用程序訪問這個數據庫,而不用編寫任何服務來獲取這些數據。那麼有誰能告訴我,我怎麼能做到這一點?如何從另一個彈簧引導應用程序訪問內存中的一個彈簧引導應用程序的數據庫
5
A
回答
11
您可以設置H2 Server作爲春豆。
編輯的pom.xml(刪除<scope>runtime</scope>
):
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
H2服務器豆加入SpringBootApplication
或Configuration
類:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
/**
* Start internal H2 server so we can query the DB from IDE
*
* @return H2 Server instance
* @throws SQLException
*/
@Bean(initMethod = "start", destroyMethod = "stop")
public Server h2Server() throws SQLException {
return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092");
}
}
編輯application.properties
- 設置數據庫的名稱:
spring.datasource.url=jdbc:h2:mem:dbname
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
然後您可以連接從這個H2服務器從外部(例如,到H2 DB的應用程序)使用此連接:jdbc:h2:tcp://localhost:9092/mem:dbname
作爲獎勵,您可以從IDE連接到您的應用程序的數據庫。
UPDATE
有試圖連接到H2爲1.5.x的版本春季啓動應用程序時,得到一個錯誤的機會。在這種情況下,只需更換一個版本的H2與前一個,例如:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.193</version>
</dependency>
更新2
如果你需要同時應設置不同的同一主機上運行多個應用程序與H2他們H2端口Server.createTcpServer
評判,例如:9092,9093,等等。
// First App
@Bean(initMethod = "start", destroyMethod = "stop")
public Server h2Server() throws SQLException {
return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092");
}
// Second App
@Bean(initMethod = "start", destroyMethod = "stop")
public Server h2Server() throws SQLException {
return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9093");
}
然後你可以用下面的URL連接到這些應用程序的H2 DB:
App1 H2: jdbc:h2:tcp://localhost:9092/mem:dbname
App2 H2: jdbc:h2:tcp://localhost:9093/mem:dbname
0
您可以在服務器模式下運行H2
。
import org.h2.tools.Server;
...
// start the TCP Server
server = Server.createTcpServer("-tcpAllowOthers").start();
...
// stop the TCP Server
server.stop();
Usage: java org.h2.tools.Server
When running without options, -tcp, -web, -browser and -pg are started.
Options are case sensitive. Supported options are:
[-help] or [-?] Print the list of options
[-web] Start the web server with the H2 Console
[-webAllowOthers] Allow other computers to connect - see below
[-webDaemon] Use a daemon thread
[-webPort ] The port (default: 8082)
[-webSSL] Use encrypted (HTTPS) connections
[-browser] Start a browser connecting to the web server
[-tcp] Start the TCP server
[-tcpAllowOthers] Allow other computers to connect - see below
[-tcpDaemon] Use a daemon thread
[-tcpPort ] The port (default: 9092)
[-tcpSSL] Use encrypted (SSL) connections
[-tcpPassword ] The password for shutting down a TCP server
[-tcpShutdown ""] Stop the TCP server; example: tcp://localhost
[-tcpShutdownForce] Do not wait until all connections are closed
[-pg] Start the PG server
[-pgAllowOthers] Allow other computers to connect - see below
[-pgDaemon] Use a daemon thread
[-pgPort ] The port (default: 5435)
[-properties ""] Server properties (default: ~, disable: null)
[-baseDir ] The base directory for H2 databases (all servers)
[-ifExists] Only existing databases may be opened (all servers)
[-trace] Print additional trace information (all servers)
The options -xAllowOthers are potentially risky.
For details, see Advanced Topics/Protection against Remote Access.
See also http://h2database.com/javadoc/org/h2/tools/Server.html
相關問題
- 1. 將彈簧引導應用程序添加爲另一個彈簧引導應用程序的依賴關係
- 2. 將彈簧引導應用程序導入到另一個項目
- 3. 使用彈簧引導管理的非彈簧引導工程
- 4. 爲彈簧引導應用
- 5. 如何導入/嵌入一個彈簧Maven的JAR應用程序到另彈簧Maven的WAR應用
- 6. 在彈簧引導應用程序中發佈網頁內容
- 7. 如何使用彈簧引導應用程序配置Wily
- 8. 基於彈簧配置文件的彈簧引導應用程序屬性
- 9. 如何正常關閉彈簧引導應用程序
- 10. 如何通過JMX監控彈簧引導應用程序?
- 11. 彈簧引導應用程序中注入的Spring Bean是NULL
- 12. 跟蹤彈簧引導應用程序中的所有請求
- 13. 在彈簧引導應用程序中禁用HTTP OPTIONS方法
- 14. 簡單的彈簧引導應用程序 - HttpServletResponse的需要
- 15. 使用駱駝與彈簧引導來建立一個REST應用程序
- 16. Maven構建Java 9彈簧引導應用程序時的RuntimeException
- 17. 在彈簧引導應用程序中模擬DB視圖
- 18. 在彈簧引導應用程序中添加角度
- 19. 在同一時間使用兩個彈簧啓動應用程序時退出一個彈簧應用程序
- 20. 彈簧引導應用程序啓動失敗,帶有兩個數據源
- 21. 在同一應用程序中使用RestController和ServletRegistrationBean的彈簧引導
- 22. 運行彈簧引導應用程序時出錯
- 23. Intellij不會啓動彈簧引導應用程序
- 24. hystrix @EnableCircuitBreaker在非彈簧引導應用程序
- 25. 通過彈簧引導應用程序提供文件列表
- 26. 嵌入式mongo測試彈簧引導應用程序
- 27. 在Linux系統上安裝彈簧引導應用程序
- 28. 彈簧引導配置應用程序上下文層次
- 29. wso2集成彈簧引導應用程序
- 30. 用於彈簧數據的彈簧引導mongodb:加載應用程序時出錯
Raj,別忘了接受一個幫助你的答案... – Cepr0