Backend/Spring+Boot

[Error] If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.

findmypiece 2021. 3. 17. 11:00
728x90

Spring Boot 어플리케이션을 실행하면 위와 같은 에러가 발생하는 경우가 있다.

결론부터 말하면 DataSource 설정이 제대로 되어 있지 않아서 그런 것이고

appliction.yml 파일에 DataSource 설정을 추가하면 간단히 해결된다.

 

그런데 Intellij의 Spring Initializr 통해서 프로젝트를 처음 생성하고

테스트를 위해 실행 어플리케이션을 실행해봤는데 이러한 에러를 마주하면 좀 당황스러울 수 있다.

 

일단 이러한 에러가 발생하는 이유는

Spring Boot 에서는 DataSource 를 필요로 하는 아래 같은 의존성이 추가만 되어 있어도

자동으로 DataSource 생성을 시도하기 때문이다.

org.springframework.boot:spring-boot-starter-data-jpa
org.mybatis.spring.boot:mybatis-spring-boot-starter

 

나 같은 경우 Spring Initializr 를 통해 Spring Boot 프로젝트를 생성할 때 

필요한 의존성을 미리 다 선택했었는데 이 때 위 의존성도 추가해서 이러한 에러가 발생한 것이다.

이러한 불필요한 에러를 마주하고 싶지 않다면 Spring Initializr 로 프로젝트를 생성할 때

최소한의 의존성만 추가해서 생성하면 된다.

 

요즘은 Spring Boot 프로젝트로 대부분 RestApi 만든다는 것을 감안하면

그냥 Lombok, Spring Web, Spring Configuration Processor 정도만 초기 의존성으로 선택하면 되겠다.

 

만약 이미 jpa, mybatis 의존성을 선택해서 프로젝트를 생성한 상태인데

프로젝트를 다시 생성하기는 귀찮고, DB정보가 확정되지 않았고, 로컬DB를 구성하기도 귀찮다면

단순히 H2 Database 의존성을 추가하는 것도 방법이다.

이 의존성을 추가하면 application.yml 에 별도로 정의된 DataSource 정보가 없다면

내부적으로 H2 Database가 실행되어 이에 대한 DataSource 를 생성하게 된다.

 

Gradle 기준 그냥 아래와 같이 의존성을 추가하면 된다.

dependencies {
    implementation "com.h2database:h2"
}

 

728x90

'Backend > Spring+Boot' 카테고리의 다른 글

spring-config-server git 저장소 활용  (0) 2021.03.22
DelegatingFilterProxy  (0) 2021.03.17
Spring Boot DevTools  (0) 2021.03.17
SpringBoot ServletFilter 구현  (0) 2021.03.16
@ServletComponentScan  (0) 2021.03.16