Aus verschiedenen Gründen habe ich mich für eine Spring Boot-Webanwendung entschieden. Zu dieser Zeit entschied ich mich für die integrierte h2db, also fasste ich die Probleme und Untersuchungen zu dieser Zeit zusammen. Übrigens ist die Version von Spring Boot "1.5.17" von 1 Serie.
Fügen Sie den Abhängigkeiten von pom.xml spring-boot-Starter-jdbc
und h2
hinzu.
Wenn Sie ein Projekt mit Spring Initializr erstellen, ist es dasselbe, wenn Sie die folgenden zwei hinzufügen.
Abhängigkeiten hinzufügen
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Fügen Sie application.properties oder application.yml die folgenden Einstellungen hinzu.
Datenquelleneinstellungen
H2 nützliche Werkzeugeinstellungen (falls erforderlich)
src/main/resources/application.propertie
# datasource
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:./h2db/sampledb
spring.datasource.username=username
spring.datasource.password=password
# connection pool use tomcat
spring.datasource.tomcat.maxActive=10
spring.datasource.tomcat.maxIdle=10
spring.datasource.tomcat.minIdle=10
spring.datasource.tomcat.initialSize=10
spring.datasource.tomcat.defaultAutoCommit=false
# h2 for debug tool
# spring.h2.console.enabled=true
# spring.h2.console.path=/h2-console
# spring.h2.console.settings.web-allow-others=true
Der Inhalt jeder Einstellung wird unter Erläuterung der Anwendungseigenschaften der offiziellen Richtlinien beschrieben. Ich werde. Die Punkte werden unten erklärt.
spring.datasource.tomcat.*= # Tomcat datasource specific settings
Da dies der Fall ist, habe ich "driverClass, url, username, password" sowie die Definition der Datenquelle von Tomcat definiert und "spring.datasource.url" usw. gelöscht.
Dies scheint nutzlos zu sein. Es scheint richtig, es nur als Pool zu definieren.
Embedded DB, also der gleiche JVM-Prozess, aber benötigen Sie einen Pool? Ich bin sicher, einige Leute denken das, aber der Autor ist auch verschwitzt. Ich habe es eingestellt, weil es für allgemeine Webanwendungen notwendig ist. Der Effekt, die Leistung nicht zu messen, ist unbekannt.
Error
# datasource
# nothing see connection pool
# connection pool use tomcat
spring.datasource.tomcat.driver-class-name=org.h2.Driver
spring.datasource.tomcat.url=jdbc:h2:./h2db/sampledb
spring.datasource.tomcat.username=username
spring.datasource.tomcat.password=password
spring.datasource.tomcat.maxActive=10
spring.datasource.tomcat.maxIdle=10
spring.datasource.tomcat.minIdle=10
spring.datasource.tomcat.initialSize=10
spring.datasource.tomcat.defaultAutoCommit=false
Sie können auch die Webverwaltungsfunktion von h2 mit der eingebetteten Datenbank verwenden. Die eingebettete Datenbank wird im selben JVM-Prozess wie die App ausgeführt. Da es sich um eine dedizierte Datenbank handelt und keine Verbindung zum Netzwerk hergestellt werden kann, war das Debuggen schwierig.
# h2 for debug tool
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true
Da es sich um eine Debug-Funktion handelt, ist es besser, sie in den Systemeigenschaften zu aktivieren, als sie in application.propeties festzulegen. In diesem Fall können Sie sicher sein, dass die Debug-Funktion deaktiviert bleibt, auch wenn Sie vergessen, die Einstellungsdatei zu ändern.
java -jar your-app.jar -Dspring.h2.console.enabled=true -Dspring.h2.console.path=/h2-console -Dspring.h2.console.settings.web-allow-others=true
Übrigens ist "spring.h2.console.settings.web-allow-Others", ob der Zugriff von einem entfernten Standort (einem anderen PC) aus zugelassen werden soll. Auf die Standardeinstellung "false" kann nur lokal zugegriffen werden, dh vom PC aus, auf dem die App ausgeführt wird.
h2db ist eine speicherinterne Datenbank, aber Daten können in einer eingebetteten Datenbank beibehalten werden. Dies bedeutet, dass es ein Problem wäre, wenn es bei jedem Start initialisiert würde.
CREATE TABLE IF NOT EXISTS
jdbc: h2 :. / h2db / sampledb
bedeutet, dass die DB-Datei im Pfad (. / h2db / sampledb
) gespeichert wird, der zur Laufzeit relativ zum aktuellen Verzeichnis angezeigt wird.. /
ist wichtig für die relative PfadangabeWenn Sie springframework so wie es ist verwenden, sind verschiedene Einstellungen (Bean-Definition, AOP usw.) erforderlich, die für den DB-Zugriff erforderlich sind. Beim Spring-Boot werden sie jedoch automatisch festgelegt.
Die Bean der Datenquelle wird automatisch festgelegt
Bean von JdbcTemplate
, NamedParameterJdbcTemplate
wird automatisch gesetzt
Die Transaktionssteuerung durch "@ Transactional" ist aktiviert
Dieses Mal habe ich die Probleme und Untersuchungen zur Verwendung des integrierten h2db in der Pring-Boot-Webanwendung zusammengefasst. Als ich es tatsächlich ausprobierte, war ich überrascht, weil es weniger Einstellungen gab als ich erwartet hatte. In diesem Sinne ist der Federstiefel einfach.
Recommended Posts