Zugriff auf die H2 Entwicklungsdatenbank
Spring Boot legt für die Entwicklung eine in-memory Datenbank an, standardmäßig H2. Mit H2 kommt eine WebConsole-Klasse, die einen Zugriff aus dem Browser ermöglicht. Das hilft bei der Programmentwicklung und Fehlersuche, denn man kann direkt sehen, welche Daten in der Datenbank abgelegt sind.
Mit wenigen Schritten ist die H2-Console einsatzfähig und konfiguriert:
-
buildNeeded Konfigurationsdatei so ändern, dass die H2 Bibliothek zur Compile-Zeit verfügbar ist, also in gradle.config
run('com.h2database:h2')
incompile('com.h2database:h2')
ändern. Eventuell muss anschließend das Gradle-Script buildNeeded ausgeführt werden, damit die Klasse von IntelliJ gefunden wird. - Konfigurationsdatei hinzufügen, die die WebConsole Klasse lädt und auf eine URL (s. Zeile 12) abbildet.
package de.fh_zwickau.pti.geobe; import org.h2.server.web.WebServlet; import org.springframework.boot.context.embedded.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class WebConfiguration { @Bean ServletRegistrationBean h2servletRegistration(){ ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet()); registrationBean.addUrlMappings("/console/*"); return registrationBean; } }
- Wenn Spring Security aktiviert wurde, muss die SecurityConfiguration ergänzt werden, um einen Zugriff auf die Console zuzulassen. Die folgenden Zeilen müssen zur Methode
configure(HttpSecurity httpSecurity)
hinzugefügt werden, soweit sie noch nicht vorhanden sind:... httpSecurity.authorizeRequests() .antMatchers("/console/**").permitAll(); // Use Vaadin's built-in CSRF protection instead httpSecurity.csrf().disable(); httpSecurity.headers().frameOptions().disable();
- Die Testdatenbank ist dann unter der URL jdbc:h2:mem:testdb, User sa, ohne Passwort erreichbar.
H2 Console
Bevor man die Webkonsole unter /console erreichen kann muss man sich allerdings vorher im Webclient erfolgreich angemeldet haben. Andernfalls wird man stets auf /login umgeleitet.