spring webflux h2控制台 return 404

H2ConsoleAutoConfiguration不会对Spring WebFlux和Netty(响应式)执行,因为H2控制台将只对基于servlet的应用程序可用。所以,你必须在这个spring boot应用程序中手动配置H2服务器,使用spring webflux和netty。

这是一份配置h2控制台的代码示例


import org.h2.tools.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

import static org.h2.tools.Server.createWebServer;

@Component
public class H2ServerManual {

    Logger log = LoggerFactory.getLogger(H2ServerManual.class);
    private Server webServer;

    @Value("${h2-server.port}")
    Integer h2ConsolePort;

    @EventListener(ContextRefreshedEvent.class)
    public void start() throws java.sql.SQLException {
        log.info("starting h2 console at port " + h2ConsolePort);
        this.webServer = createWebServer("-webPort", h2ConsolePort.toString(),
                "-tcpAllowOthers").start();
        System.out.println(webServer.getURL());
    }

    @EventListener(ContextClosedEvent.class)
    public void stop() {
        log.info("stopping h2 console at port " + h2ConsolePort);
        this.webServer.stop();
    }
}

如果发现某些类找不见需要去掉h2依赖中的依赖生效范围

在这里插入图片描述

你需要在spring的配置文件中配置h2的端口,不能和应用程序端口一样


h2-server:
  port: 8081

需要配置开启控制台


spring:
  h2:
    console:
      enabled: true
      settings:
        web-allow-others: true
      path: /h2
  datasource:
    url: jdbc:h2:./rental_db;AUTO_SERVER=TRUE
    username: sa
    password: 
    driverClassName: org.h2.Driver

<think>好的,我需要帮助用户了解如何在Spring Boot项目中配置和使用H2数据库。首先,我应该回顾一下用户提供的引用内容,确保回答准确。 用户已经提供了四个引用,涉及到H2数据库的集成步骤、依赖项、实体类以及SQL脚本的配置。我需要把这些信息整合起来,分步骤解释。 第一步是创建项目。通常Spring Initializr可以快速生成项目结构,这里需要添加必要的依赖。根据引用[2],需要H2Spring Data JPA的依赖,可能还有Web依赖。因此,用户需要在pom.xml或build.gradle中加入这些。 接下来是配置application.properties或application.yml。引用[1]和[4]提到数据源配置和启用H2控制台。需要设置数据库URL、驱动类、用户名密码,以及开启控制台。记得H2的内存模式使用jdbc:h2:mem:testdb这样的URL。 然后是关于实体类和Repository的创建。引用[2]和[3]提到JPA实体和Spring Data的接口,用户需要定义实体类并使用JpaRepository。这里可能需要示例代码,比如Student实体和对应的Repository接口。 数据初始化部分,引用[4]展示了schema-h2.sql文件,用于建表和插入数据。需要指导用户在resources/db目录下创建这个文件,并确保Spring Boot在启动时执行它。 最后,运行应用程序并访问H2控制台。用户需要知道如何通过浏览器进入控制台,并验证数据库是否正常。可能还需要测试接口或查询数据,确保配置正确。 在问题部分,需要生成三个相关问题,可能涉及配置调优、与其他数据库的区别,以及数据持久化的问题。这样用户能进一步深入学习。 需要注意回答的结构清晰,每个步骤分开,并引用对应的来源。例如,配置数据源时引用[1]和[4],实体类部分引用[2]和[3]。同时,代码示例要正确,符合用户提供的例子。 最后检查是否符合用户的要求,比如使用中文,LaTeX格式正确,问题相关等。确保没有遗漏关键步骤,比如依赖配置、H2控制台开启等。</think>### 在Spring Boot中配置和使用H2数据库的步骤 #### 1. **创建Spring Boot项目并添加依赖** 在`pom.xml`中添加以下依赖(核心依赖包括H2数据库驱动和Spring Data JPA): ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 这些依赖支持数据库操作和Web开发[^2][^3]。 #### 2. **配置H2数据库** 在`application.properties`(或`application.yml`)中添加以下配置: ```properties # 数据源配置 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= # 启用H2控制台 spring.h2.console.enabled=true spring.h2.console.path=/h2-console # JPA自动生成表结构(可选) spring.jpa.hibernate.ddl-auto=update ``` 此配置启用了H2的内存数据库控制台访问功能[^1][^4]。 #### 3. **定义实体类和Repository** 创建JPA实体类(如`Student`): ```java @Entity public class Student { @Id private Long id; private String name; private Integer age; // 省略getter/setter和构造方法 } ``` 定义Repository接口: ```java public interface StudentRepository extends JpaRepository<Student, Long> { } ``` 实体类与Repository是Spring Data JPA操作数据库的核心组件。 #### 4. **初始化数据库表和数据** 在`resources/db`目录下创建`schema-h2.sql`文件: ```sql DROP TABLE IF EXISTS student; CREATE TABLE student ( id BIGINT PRIMARY KEY, name VARCHAR(30), age INT ); INSERT INTO student VALUES (1, 'zhangsan', 23); INSERT INTO student VALUES (2, 'lisi', 45); INSERT INTO student VALUES (3, 'wangwu', 12); ``` Spring Boot启动时会自动执行该脚本以初始化数据[^4]。 #### 5. **运行和验证** 1. 启动Spring Boot应用程序。 2. 访问`http://localhost:8080/h2-console`,输入JDBC URL `jdbc:h2:mem:testdb`和用户名`sa`(密码为空)。 3. 在控制台中执行`SELECT * FROM STUDENT`,验证数据是否加载成功。 #### 6. **扩展功能(可选)** - 通过REST API暴露数据访问接口: ```java @RestController public class StudentController { @Autowired private StudentRepository repository; @GetMapping("/students") public List<Student> getAllStudents() { return repository.findAll(); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值