[java] 스프링 부트 기본 H2 jdbc 연결 (및 H2 콘솔)

내 application.properties에 아무것도 지정하지 않고 mvn spring : run으로 시작할 때 spring-boot가 생성하는 임베디드 H2 데이터베이스에 대한 H2 데이터베이스 콘텐츠를 보려고합니다. 최대 절전 모드 JPA가 테이블을 만드는 것을 볼 수 있지만 데이터베이스 아래의 URL에서 h2 콘솔에 액세스하려고하면 테이블이 없습니다.

http://localhost:8080/console/

다음과 같은 제안이 있습니다.
Spring에서 시작된 임베디드 H2 데이터베이스의 내용보기

하지만 스프링 부트에 제안 된 XML을 어디에 넣을지 모르겠습니다. 그래도 외부 데이터베이스가 구성 될 때 h2console을 더 이상 사용할 수 없기 때문에 처리해야 할 가능성이 더 높습니다. 어떤 종류의 조건부 코드로 (또는 maven 프로필이 활성화되었을 때 H2 만 포함하는 가장 이상적인 경우에 스프링이 자동으로 처리하도록 허용).

누구든지 부팅에서 H2 콘솔을 작동시키는 방법을 보여주는 샘플 코드가 있습니까 (또한 스프링이 사용하는 jdbc 연결 문자열이 무엇인지 알아내는 방법)?



답변

이것이 내가 H2와 함께 봄 부팅에서 H2 콘솔을 작동시키는 방법입니다. 이것이 옳은지는 확실하지 않지만 아무도 해결책을 제시하지 않았으므로 이것이 최선의 방법이라고 제안 할 것입니다.

제 경우에는 H2 콘솔을 시작할 때 입력 할 내용 (이 경우 “AZ”)을 갖도록 데이터베이스의 특정 이름을 선택했습니다. spring.jpa.database-platform을 생략해도 아무것도 해치지 않는 것처럼 보이지만이 모든 것이 필요하다고 생각합니다.

application.properties에서 :

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Application.java (또는 일부 구성)에서 :

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    return registration;
}

그런 다음 {server} / console /에서 H2 콘솔에 액세스 할 수 있습니다. JDBC URL로 입력하십시오. jdbc : h2 : mem : AZ


답변

Spring Boot 1.3.0.M3부터 H2 콘솔을 자동 구성 할 수 있습니다.

전제 조건은 다음과 같습니다.

  • 웹 앱을 개발 중입니다.
  • Spring Boot Dev Tools가 활성화되었습니다.
  • H2가 클래스 경로에 있습니다.

당신이 봄 부팅 개발 도구를 사용하지 않는 경우에도 자동 구성 설정에 의해 콘솔 여전히 수 spring.h2.console.enabledtrue

자세한 내용은 설명서 의이 부분을 확인 하십시오.

이러한 방식으로 구성 할 때 콘솔은 http : // localhost : 8080 / h2-console / 에서 액세스 할 수 있습니다.


답변

이 주제에 대한 멋진 튜토리얼을 찾았습니다.

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

기본적으로 올바른 JDBC URL은 다음과 같습니다. jdbc:h2:mem:testdb


답변

에서 http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

H2 웹 콘솔 (H2ConsoleProperties) :

spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.

위의 두 줄을 내 application.properties 파일에 추가하면 기본 사용자 이름 (sa) 및 암호를 사용하여 H2 데이터베이스 웹 콘솔에 액세스하기에 충분했습니다 (UI가 프롬프트 할 때 암호를 입력하지 않기 때문에 비어 있음).


답변

단계별 가이드와 유사한 답변.

  1. 추가 개발자 도구의 의존성을하는 pom.xmlbuild.gradle

메이븐

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
  1. 다음에서 db에 액세스 http://localhost:8080/h2-console/
  2. jdbc:h2:mem:testdbJDBC URL로 지정
  3. 프로젝트에서 지정한 엔티티가 테이블로 표시되어야합니다.

답변

/resources/application.properties의 속성 아래에만 있습니다. 스프링 부트를 실행 한 후이 URL ( http : // localhost : 8080 / h2-console / )을 사용하면 H2 콘솔의 테이블이 표시되고 읽혀서 테이블 데이터를 볼 수 있으며 간단한 SQL 명령을 실행할 수도 있습니다. 한 가지, Java 코드에서 데이터를 가져 오는 동안 schema.sql이 소문자 이름을 사용하더라도 열 이름은 대문자입니다. 🙂

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true


답변

들어 봄 부팅 2.1.1 봄 Initialzr에서 직선 :

  1. devtools의 기본값 은 http://127.0.0.1:8080/h2-console/입니다.

    • POM : spring-boot-starter, h2, spring-boot-starter-web, spring-boot-devtools
  2. devtools없이 -속성에서 설정해야합니다.spring.h2.console.enabled=true spring.h2.console.path=/h2-console

    • POM : spring-boot-starter, h2, spring-boot-starter-web

일단 거기에 도착하면-JDBC URL을 설정하십시오 : jdbc : h2 : mem : testdb (기본값은 작동하지 않습니다)