※ 이 글은 아끼는 저의 학생이 공유한 글을 기반으로 재편집한 글입니다.

기존의 Spring MVC 환경에서는 인메모리 DB인 h2의 web console을 이용하기 수월했었는데, Spring WebFlux + R2DBC 환경에서는 Spring MVC 환경에서 사용하던 방법 그대로 h2의 web console을 이용할 수 없기 때문에 별도의 설정을 해주어야 합니다.

Spring WebFlux + R2DBC 환경에서 h2 web console을 사용하기 위한 설정 방법은 다음과 같습니다.

Gradle 설정

== build.gradle ==

dependencies {
	...
	implementation 'io.r2dbc:r2dbc-h2'
}

build.gradle의 dependencies에 implementation 'io.r2dbc:r2dbc-h2'를 추가합니다.

 

application.yml 설정

spring:
  sql:
    init:
      schema-locations: classpath*:db/h2/schema.sql
      data-locations: classpath*:db/h2/data.sql
  r2dbc:         # (1)                                   
    url: r2dbc:h2:mem:///test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    username: sa
    password:
h2:       # (2)
  console:
    port: 8090
logging:
  level:
    org:
      springframework:
  • (1)과 같이 R2DBC용 H2 Connection 정보를 설정합니다.
  • (2)와 같이 h2 콘솔 포트를 8090으로 설정합니다. 포트 번호는 편한 번호로 설정하면 됩니다.

 

h2 console 서버 설정


==== H2ServerConfig.java ====

@Slf4j
@Component
public class H2ServerConfig {
    @Value("${h2.console.port}")
    private Integer port;
    private Server webServer;

    @EventListener(ContextRefreshedEvent.class)
    public void start() throws java.sql.SQLException {
        log.info("started h2 console at port {}.", port);
        this.webServer = Server.createWebServer("-webPort", port.toString()).start();
    }

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

application.yml에서 추가한 포트 번호를 H2 Server를 start 하기 전에 지정해 줍니다.

 

애플리케이션 실행

애플리케이션을 실행한 후, http://localhost:8090으로 접속해서 h2 web console로 접속이 잘 되는지 확인합니다.

+ Recent posts

출처: http://large.tistory.com/23 [Large]