当前位置: 首页 > 知识库问答 >
问题:

Spring Boot应用程序中的H2模式为空

吕修伟
2023-03-14

我正在设置一个barebones Spring Boot项目,我在基本设置中遇到了一些问题。

DatabaseLoader似乎没有被调用,并且当我打开这个项目的H2控制台时,我没有看到包含Employee表的模式。

以下是我的pom.xml的相关部分:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <!-- 
        <scope>runtime</scope>
         -->
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.4</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
@Data
@Entity
public class Employee {
    private @Id @GeneratedValue Long id;
    private String firstName;
    private String lastName;
    private String description;

    public Employee() {}

    public Employee(String firstName, String lastName, String description) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.description = description;
    }

}
    @Autowired
    public DatabaseLoader(EmployeeRepository repository) {
        this.repository = repository;
    }

    @Override
    public void run(String... strings) throws Exception {
        this.repository.save(new Employee("duke", "earl", "dude"));
    }

}
POST:{"firstName": "Bilbo", "lastName": "Baggxins", "description": "burglar"}

带着:

{
  "_links": {
    "self": {
      "href": "http://localhost:8080/api/employees/4"
    },
    "employee": {
      "href": "http://localhost:8080/api/employees/4"
    }
  }
}

共有1个答案

郝君博
2023-03-14

Spring Boot的默认h2 url是:jdbc:h2:mem:testdb

要使用JDBC:H2:~/test,必须将其添加到应用程序中。properties:

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:~/test

正在发生的是,您正在将雇员写入Spring-Boot的内存数据库(testdb)中。然后,打开h2-console到jdbc:h2:~/test,这将动态创建它,并让您浏览空状态。

    null
 类似资料:
  • 我正在运行一个Spring启动应用程序 除了maven之外,没有任何h2设置 当我连接到h2控制台时,我可以看到应该为两个实体创建的表 我连接了JDBC URL:jdbc: h2: mem: testdb(这应该是默认值) 是否有方法确保H2当前运行的模式是什么/或H2的一些日志文件? 在我的申请中。我有这样的属性: 我在某个地方读到H2在登录时初始化自己,但我正在看一个演示,这些是所采取的确切步

  • 这是我使用SpringBoot的第一天,我试图理解体系结构,因此我开始构建一个hello world应用程序: 在我的pom.xml中,在maven-shade-plugin下,我将mainClass声明如下: 文件目标是src/main/java/com/demo/helloworld.java,该文件中的代码是: 我错过了什么?

  • 我需要在Spring-boot应用程序中使用默认的ObjectMapper作为单个实例。我是否可以简单地在应用程序内部@autowire ObjectMapper(在Spring-boot应用程序中默认创建的实例)而不创建@bean(因为我不想更改ObjectMapper的任何功能) https://docs.spring.io/spring-boot/docs/current/reference

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 我想在应用程序运行时找到我的对象大小。我想用千分尺在Grafana中显示我的对象大小。 我的对象像人、学生、...... 我该怎么办? 对象大小像文件大小、对象体积

  • 我想启用或禁用具有外部配置的SSL/TLS,这些配置可以在应用程序启动期间提供。应用程序应该支持http和HTTPS的所有crud操作。 既然上面的属性是不推荐使用的,那么我如何在不使用配置文件的情况下实现它。