java - 如何将 H2 控制台连接到嵌入式 Spring H2 DB

标签 java database spring spring-mvc h2

好的,我正在开发一个简单的应用程序,它有用于开发的 Spring Ebedded H2 数据库。 database.xml bean conf 看起来像这样:

<bean id="h2Server" class="org.h2.tools.Server" factory-method="createTcpServer"
        init-method="start" destroy-method="stop" depends-on="h2WebServer">
        <constructor-arg value="-tcp,-tcpAllowOthers,-tcpPort,9092" />
    </bean>
    <bean id="h2WebServer" class="org.h2.tools.Server" factory-method="createWebServer"
        init-method="start" destroy-method="stop">
        <constructor-arg value="-web,-webAllowOthers,-webPort,8082" />
    </bean>

    <jdbc:embedded-database id="dataSource" type="H2" />

H2 数据库正在初始化,我的应用程序正在运行,我正在创建实体,并且当 Tomcat 启动时它们存储在 H2 数据库中(我知道它是因为我使用和检索它们)。但是,当我查看 H2 控制台时,我的实体表不存在。

我猜 H2 控制台指向另一个 H2 数据库,而 Spring Embedded H2 Db 与那个 H2 控制台无关。

如何解决?

编辑:我通过输入 http://localhost:8082 来访问 H2 控制台 在我的网络浏览器中。

最佳答案

如果您的应用程序不是 spring boot,那么您需要在 web.xml 文件中添加以下 servlet 配置

!-- H2 Database Console for managing the app's database -->
<servlet>
    <servlet-name>H2Console</servlet-name>
    <servlet-class>org.h2.server.web.WebServlet</servlet-class>
    <init-param>
        <param-name>-webAllowOthers</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>H2Console</servlet-name>
    <url-pattern>/admin/h2/*</url-pattern>
</servlet-mapping>

<!-- Handles requests into the application -->

详情请看https://github.com/spring-projects/greenhouse/blob/master/src/main/webapp/WEB-INF/web.xml

如果您的应用程序是基于 spring boot 的,那么您必须遵循 https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

关于java - 如何将 H2 控制台连接到嵌入式 Spring H2 DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35061633/

相关文章:

mysql - 如何知道哪个用户正在转储mysql数据库

database - Laravel DB facade 如何表达 LIKE

java - 在 Java 中使用 Inflater 解压缩 gzip 数据

database - 如何向 Django 添加非官方数据库后端?

java - Maven 无法通过流操作链编译 java

java - jdk 更新后获取 PKIX 路径构建失败 : sun. security.provider.certpath.SunCertPathBuilderException

java - Spring - 如何运行一系列线程并等待它们完成后再完成?

java - 嵌套的 Autowiring 字段在 JUNIT 测试中保持为空

java - Java迭代器如何检测集合被修改而抛出ConcurrentModificationException?

java - java代码有什么问题?