tutorial starter star springboot initializr español create spring-boot spring-data spring-data-jpa h2

spring boot - starter - Cómo acceder a la base de datos de memoria h2 de una aplicación de arranque de resorte desde otra aplicación de arranque de resorte



spring io startup (2)

En mi proyecto, he creado 3 aplicaciones de arranque de primavera. La primera aplicación de arranque de primavera tiene una base de datos integrada h2. Ahora quiero acceder a esta base de datos desde mi segunda y tercera aplicación de arranque de primavera directamente sin escribir ningún servicio para obtener estos datos. Entonces, ¿alguien puede decirme cómo puedo lograr esto?


Puede configurar el servidor H2 como Spring Bean.

Primero edite pom.xml - elimine <scope>runtime</scope> de la dependencia h2:

<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>

Luego agregue bean de servidor H2 a SpringBootApplication o clase de 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"); } }

Último: edite application.properties : establezca el nombre de la base de datos:

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

Luego puede conectarse a este servidor H2 desde el exterior (por ejemplo, a su aplicación con H2 DB) utilizando esta conexión:

jdbc:h2:tcp://localhost:9092/mem:dbname

Como beneficio adicional con esta URL, puede conectarse a la base de datos de su aplicación directamente desde su IDE .

ACTUALIZAR

Existe la posibilidad de que se produzca un error al intentar conectarse a H2 para la aplicación Spring Boot de la versión 1.5.x. En este caso, simplemente cambie una versión de H2 a la anterior, por ejemplo:

<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.193</version> </dependency>

ACTUALIZACIÓN 2

Si necesita ejecutar varias aplicaciones con H2 simultáneamente en el mismo host, debe configurar los diferentes puertos H2 en ellas en Server.createTcpServer mothod, por ejemplo: 9092, 9093, etc.

// 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"); }

Luego, puede conectarse a la base de datos H2 de estas aplicaciones con las siguientes URL:

App1 H2: jdbc:h2:tcp://localhost:9092/mem:dbname App2 H2: jdbc:h2:tcp://localhost:9093/mem:dbname


Puede ejecutar H2 en modo servidor.

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

Cómo usar h2 como servidor

Pregunta similar 1

Pregunta similar 2